我已将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位于我的编辑器的左上角,它将保留在编辑器的左上角,但是当最大化时实际的左上角会更远。
我希望你理解我的意思。我希望我的孩子项目与父母一起最大化。如何编辑我的代码才能完成这项工作?
答案 0 :(得分:4)
您可以根据所需的布局定义特定的Margins
和Grid.RowDefinitions
,而不是Grid.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
表示&#34;大小与单元格内容&#34;并且*
表示&#34;大小到剩余区域&#34;。
答案 1 :(得分:2)
当您使用Grid
作为窗口的主要容器时,请不要修改其属性,如width
或...它保持网格适合窗口。然后点击每个元素,尝试在chain
的{{1}}边框上播放Grid
等锚点。
例如,我在Xaml Designer
模式下设置了right chain
符号和top chain
符号,并在close
其他open
符合右上角的按钮它的。
chains
其他方式是使用 <Grid Background="#FFF3F3F3">
<Label Content="Hello" HorizontalAlignment="Left" Margin="20,48,0,0" VerticalAlignment="Top" FontSize="36" FontFamily="Segoe UI Light"/>
<Image Source="Infinite_symbol__128.png" Margin="113,0,0,0"/>
<Button x:Name="exitBtn" Content="Test"
HorizontalAlignment="Right" VerticalAlignment="Top"
Margin="0,10,0,0" Width="65" Height="51" BorderBrush="{x:Null}" Click="exitBtn_Click">
<Button.Background>
<ImageBrush ImageSource="close33 (2).png"/>
</Button.Background>
</Button>
</Grid>
和columns
来获得更好的布局,但即使使用cols和row,也必须在单元格中设置元素的rows
。这是将元素保持在理想位置的安全方法。