当其他列子项折叠时调整 WPF 网格列的大小? [英] Resizing WPF Grid Column when other Columns children is collapsed?
本文介绍了当其他列子项折叠时调整 WPF 网格列的大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在一个Grid
中有两个控件,需要让一个控件填满所有的Grid
空间,然后另一个得到Collapsed
,我不知道我可以使用什么 Container
,我也尝试了 StackPanel
和 DockPanel
,但我找不到好的解决方案.这里是我的代码:
I have two controls in a Grid
,and need to make one to fill all the Grid
space after the another one get Collapseded
,i don't know what Container
can i use,i tried StackPanel
and DockPanel
too,but i couldn't find a good solution.here's my code:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Visibility="{Binding Istxt1Visible}"/>
<TextBox Grid.Column="1" Visibility="{Binding Istxt2Visible}"/>
</Grid>
推荐答案
使用转换器怎么样?比如
what about using a converter? Such as
在窗口资源中
<Window.Resources>
<local:VisibilityToColumnLengthConverter x:Key="visConv" />
</Window.Resources>
.....
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ElementName=tb1, Path=Visibility, Converter={StaticResource visConv}}"/>
<ColumnDefinition Width="{Binding ElementName=tb2, Path=Visibility, Converter={StaticResource visConv}}"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Visibility="collapsed" Name="tb1" />
<TextBox Grid.Column="1" Visibility="Visible" Name="tb2" />
</Grid>
最后是转换器的代码
[ValueConversion(typeof(System.Windows.Visibility), typeof(System.Windows.GridLength))]
public class VisibilityToColumnLengthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
System.Windows.Visibility vis = (System.Windows.Visibility)value;
if (vis == System.Windows.Visibility.Visible)
return new System.Windows.GridLength(1, System.Windows.GridUnitType.Star);
else
return new System.Windows.GridLength(1, System.Windows.GridUnitType.Auto);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
这篇关于当其他列子项折叠时调整 WPF 网格列的大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文