假设我有一个包含4列的网格。每列采用相同的宽度
-> 100%/ 4cols = 25%。
第三列中有一个TextBlock
或任何其他控件。现在,当我调整Width
的{{1}}的大小并且Window
到达column
时,我希望minimum value
使用TextBlock
else ColumnSpan="2"
太小。我希望你们能理解我的意思。我尝试了很多事情,但我什至没有达到我想要的目标,因为我对TextBlock
很陌生。例如,将WPF
设置得不会太小是行不通的,因为在某些时候控件仍将隐藏在grid列内。除非您只是想要网格布局,否则我对您没有任何有用的minWidth
。也许xaml
不是我想要的正确的东西吗?其他布局似乎不适用于此目的。任何帮助表示赞赏。
答案 0 :(得分:1)
您可以处理SizeChanged
或窗口的Grid
事件,并在网格/窗口缩小到pre之下时以编程方式设置Grid.ColumnSpan
的{{1}}附加属性定义的最小宽度。请参考以下示例代码。
TextBlock
XAML:
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
const double MinWidth = 200;
Grid grid = (Grid)sender;
if (grid.ActualWidth < MinWidth)
Grid.SetColumnSpan(textBlock, 2);
else
Grid.SetColumnSpan(textBlock, 1);
}
如果减小窗口的宽度,蓝色的<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Grid SizeChanged="Grid_SizeChanged">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="25*" />
</Grid.ColumnDefinitions>
<TextBlock Background="Yellow" Text="1" />
<TextBlock Background="Green" Text="2" Grid.Column="1" />
<TextBlock Background="Red" Text="4" Grid.Column="3" />
<TextBlock x:Name="textBlock" Background="Blue" Text="3" Grid.Column="2" Grid.ColumnSpan="2" />
</Grid>
</Window>
会在第三和第四列上出现条纹。