我有两个控件Grid
,并且需要制作一个来填充所有Grid
另一个获得后的空间Collapseded
,我不知道什么Container
我可以使用吗,我试过了StackPanel
and DockPanel
我也是,但找不到好的解决方案。这是我的代码:
<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>
使用转换器怎么样?例如
在窗口资源中
<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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)