C# 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

我已将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.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大小(宽度和高度),则应在关闭模式下设置所有锚点(链)。通过此设置,您可以说:我希望我的元素根据网格大小更改其大小,网格适合窗口,这就是您的目标。啊,很好。我的问题是,如何为中间的文本设置锚点?属性对话框中有选项吗?现在你说:“我的文本”。。。!但在你的问题中,你说的是保持最高的公司