假设我有一个2 x 2网格。它们包含不同重要性的内容。
单元格(0,0)和(0,1)具有重要信息。 单元格(1,0)和(1,1)的重要信息不太重要。
当我调整窗口大小时,网格的尺寸也会发生变化。当网格超出阈值宽度时,如何不显示非重要单元格。
我考虑过将某种可见性与最小宽度绑定在一起的某种值转换器,但是这样做是不是很简单?
答案 0 :(得分:1)
可能有更优雅的方式来做到这一点,但以下工作。
当窗口宽度低于阈值时,它使用触发器将右列ColumnDefinition的MaxWidth属性设置为0。
XAML:
<Window x:Class="Misc.Window1"
x:Name="Window1Name"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" SizeChanged="Window1_SizeChanged">
<Grid TextBlock.FontSize="40">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition x:Name="RightColumn">
<ColumnDefinition.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Window1Name, Path=HideRightColumn}" Value="True">
<Setter Property="ColumnDefinition.MaxWidth" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">0,0</TextBlock>
<TextBlock Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">0,1</TextBlock>
<TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center">1,0</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center">1,1</TextBlock>
</Grid>
</Window>
代码背后:
public partial class Window1 : Window, INotifyPropertyChanged
{
public Window1()
{
InitializeComponent();
}
public bool HideRightColumn
{
get
{
return this.Width < 200;
}
}
private void Window1_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("HideRightColumn"));
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}