C# WPF窗口最大化导致项目错位
我已将WPF窗口设置为最大化,但其中的项目(如按钮和图像)有时会随着窗口拉伸,甚至位置错位C# WPF窗口最大化导致项目错位,c#,wpf,wpf-controls,expression-blend,C#,Wpf,Wpf Controls,Expression Blend,我已将WPF窗口设置为最大化,但其中的项目(如按钮和图像)有时会随着窗口拉伸,甚至位置错位 <Window x:Class="HelloApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="HelloApp" Height="661.8
<Window x:Class="HelloApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="HelloApp" Height="661.842" Width="1105.263"
WindowStyle="None" ResizeMode="NoResize"
WindowStartupLocation="CenterScreen" WindowState="Maximized">
<Grid Background="#FFF3F3F3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="Auto" Width="Auto">
<Label Content="Hello" HorizontalAlignment="Left" Margin="20,48,0,0" VerticalAlignment="Top" FontSize="36" FontFamily="Segoe UI Light"/>
<Image Margin="49,7,994,593" Source="Infinite_symbol__128.png"/>
<Button x:Name="exitBtn" Content="" HorizontalAlignment="Left" Margin="1042.148,9.606,0,0" VerticalAlignment="Top" Width="52.852" Height="51" BorderBrush="{x:Null}" Click="exitBtn_Click">
<Button.Background>
<ImageBrush ImageSource="close33 (2).png"/>
</Button.Background>
</Button>
</Grid>
</Window>
例如,当我启动程序时,如果按钮X位于编辑器的左上角,它将保持在编辑器的左上角,但是当最大化时,实际的左上角将相距很远
我希望你明白我的意思。我希望我的子项与父项一起最大化。如何编辑代码以完成此操作?您可以根据所需的布局定义特定的
网格.RowDefinitions
和网格.ColumnDefinitions
,而不是边距。例如,下面的Xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="TopLeft"/>
<Button Grid.Row="0" Grid.Column="2" Content="TopRight"/>
<Canvas Grid.Row="1" Grid.Column="1"/>
<Button Grid.Row="2" Grid.Column="0" Content="BottomLeft" />
<Button Grid.Row="2" Grid.Column="2" Content="BottomRight" />
</Grid>
按以下方式划分窗口:
在上述Xaml中,Auto
表示“大小到单元格内容”,而*
表示“大小到剩余区域”。而不是边距
您可以根据所需的布局定义特定的网格.RowDefinitions
和网格.ColumnDefinitions
。例如,下面的Xaml
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="TopLeft"/>
<Button Grid.Row="0" Grid.Column="2" Content="TopRight"/>
<Canvas Grid.Row="1" Grid.Column="1"/>
<Button Grid.Row="2" Grid.Column="0" Content="BottomLeft" />
<Button Grid.Row="2" Grid.Column="2" Content="BottomRight" />
</Grid>
按以下方式划分窗口:
在上述Xaml中,Auto
表示“大小到单元格内容”,而*
表示“大小到剩余区域”。当您将网格
用作窗口的主容器时,不要修改其属性,如宽度
或。。。它使网格与窗口保持一致。然后单击每个元素并尝试在Xaml设计器中的Grid
边框上播放其锚定,如chain
例如,我通过在关闭
模式下设置它的右链
标志和上链
标志,将您的按钮安装在右上角,然后我打开
编辑它的其他链
另一种方法是使用列
和行
以获得更好的布局,但即使使用列和行,也必须在单元格内设置元素的定位点。这是将图元保持在理想位置的安全方法。当您使用网格作为窗口的主容器时,请不要修改其属性,如宽度
或。。。它使网格与窗口保持一致。然后单击每个元素并尝试在Xaml设计器中的Grid
边框上播放其锚定,如chain
例如,我通过在关闭
模式下设置它的右链
标志和上链
标志,将您的按钮安装在右上角,然后我打开
编辑它的其他链
另一种方法是使用列
和行
以获得更好的布局,但即使使用列和行,也必须在单元格内设置元素的定位点。这是将元素保持在理想位置的安全方法。放置布局代码包括容器元素
,按钮
,编辑器
和。。。在这里,您的答案将基于您当前的窗口布局。当这里没有关于您的布局的任何必需信息时,其他人如何帮助您?将您的布局代码包括容器元素
,按钮
,编辑器
和。。。在这里,您的答案将基于您当前的窗口布局。当这里没有任何关于你的布局的必要信息时,其他人如何帮助你?你说的“链”是什么意思?我知道这是附在窗口上的4个链式图标。因此,如果我将链连接到窗口,它将与窗口一起最大化?它们是锚定点。它们与网格相关,而不是与窗口相关,每个元素在网格中都有4个定位点。因此,如果希望通过更改窗口大小(例如最大化窗口)来更改元素的X和Y大小(宽度和高度),则应在关闭模式下设置所有锚点(链)。通过此设置,您可以说:我希望我的元素根据网格大小更改其大小,网格适合窗口,这就是您的目标。啊,很好。我的问题是,如何为中间的文本设置锚点?属性对话框中有选项吗?现在你说:“我的文本”。。。!但在你的问题中,你说的是在最大化过程中保持上角按钮的位置。我无法理解“我的文本”是哪个元素或哪个元素的文本。请通过添加新的部分来更改您的问题,以便清楚地解释您的问题。如果你可以在“最大化”之前和之后从你的窗口中取出2张快照,然后比较它们并根据图片描述你的问题。你说的“链”是什么意思?我知道这是附在窗口上的4个链式图标。因此,如果我将链连接到窗口,它将与窗口一起最大化?它们是锚定点。它们与网格相关,而不是与窗口相关,每个元素在网格中都有4个定位点。因此,如果希望通过更改窗口大小(例如最大化窗口)来更改元素的X和Y大小(宽度和高度),则应在关闭模式下设置所有锚点(链)。通过此设置,您可以说:我希望我的元素根据网格大小更改其大小,网格适合窗口,这就是您的目标。啊,很好。我的问题是,如何为中间的文本设置锚点?属性对话框中有选项吗?现在你说:“我的文本”。。。!但在你的问题中,你说的是保持最高的公司