我有这个XAML标记......
<Grid Name="ProductsGrid" Width="500">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="ProductList" Width="*" />
<ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
</Grid.ColumnDefinitions>
当应用程序启动时,第二列的宽度为100“单位”。
当窗口调整大小时,列会增长和缩小 - 它保持与第1列的比率,我认为这是我应该在WPF中发生的事情。因此,当应用程序启动时,窗口大小设置为500,第二列是总宽度的1/5。随着应用程序调整大小,它保持总宽度的1/5。但在此示例中,我希望它保持在100个单位。
有什么想法吗?
答案 0 :(得分:1)
删除网格的宽度,它固定网格的宽度,网格的宽度保持为100 ...如果要查看实际的网格位置,请给出网格背景颜色。
您可以将主窗口的初始宽度固定为100并使网格没有固定宽度以允许所需的行为
试试这个:
<Window x:Class="WpfApplication6.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="100" x:Name="MyWindow">
<Grid Name="ProductsGrid">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="ProductList" Width="*" />
<ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
</Grid.ColumnDefinitions>
答案 1 :(得分:1)
试试这个
<Grid Name="ProductsGrid" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Name="ProductList" Width="*" />
<ColumnDefinition Name="ProductInfo" Width="100" MinWidth="10" MaxWidth="100"/>
</Grid.ColumnDefinitions>
</Grid>
您需要删除Grid的固定宽度。
如果您希望初始窗口的大小为500,那么您可以处理window loaded event
并将window
的大小设置为500.不要在后面的代码中硬编码Grid的大小,否则硬编码XAML你将再遇到同样的问题
private void mywindow_Loaded(object sender, RoutedEventArgs e)
{
this.Width = 500;
}