Может быть более элегантный способ сделать это, но работает следующее:
Он использует триггер, чтобы установить для свойства MaxWidth столбца ColumnDefinition правого столбца значение 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
}