我有一个宽度可变的网格。它有三列,外面的两列用作中间列内容的可变边距。
我希望网格具有以下与尺寸有关的属性:
我使用了以下代码:
<ColumnDefinition Width="10*" MaxWidth="10" />
<ColumnDefinition Width="200*" MinWidth="200"/>
<ColumnDefinition Width="10*" MaxWidth="10" />
它完美地工作,除了一个问题:如果Grid的Width小于中间列的MinWidth,则该列不会更改其宽度以适合Grid的宽度,而是保持200px。但是,如果我删除MinWidth属性,则当网格的宽度为200px时,外两列将不会“拉伸”为0px。
当网格小于200像素时,我希望中间列可以拉伸到网格的宽度。 我该怎么办?
答案 0 :(得分:0)
如果将MinWidth
设置为200,则中间列的宽度当然会保持200 DIP。这正是MinWidth
属性的用途。
如果您想要更多自定义的行为,则应使用C#等编程语言来实现。例如,您可以处理SizeChanged
的{{1}}事件,并在宽度小于200 DIP时隐藏外部列。像这样:
Grid
XAML:
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
Grid grid = (Grid)sender;
if (e.NewSize.Width < 200)
{
grid.ColumnDefinitions[0].Width = new GridLength(0);
grid.ColumnDefinitions[2].Width = new GridLength(0);
}
else
{
grid.ColumnDefinitions[0].Width = new GridLength(10, GridUnitType.Star);
grid.ColumnDefinitions[2].Width = new GridLength(10, GridUnitType.Star);
}
}