【问题标题】:Resizing WPF Grid Column when other Columns children is collapsed?折叠其他列子项时调整WPF网格列的大小?
【发布时间】:2012-11-08 19:07:26
【问题描述】:

我在Grid 中有两个控件,需要一个来填充所有Grid 空间,然后另一个得到Collapseded,我不知道我可以使用什么Container,我试过了StackPanelDockPanel 也是,但我找不到好的解决方案。这是我的代码:

<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>

【问题讨论】:

  • 这样网格被调整为文本框的大小。单行文本框不能扩展高度。您应该将它们设为多行,并且您应该以某种方式固定网格的大小(拉伸到父级或固定高度)。

标签: wpf wpf-controls


【解决方案1】:

使用转换器怎么样?比如

在窗口资源中

<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();
    }
}

【讨论】:

  • Klaus78 :谢谢,但是,他们都可以是Visiblecollapsed。我编辑了这个问题!
猜你喜欢
  • 2018-05-05
  • 2018-09-26
  • 2012-12-22
  • 1970-01-01
  • 2017-02-26
  • 2012-07-03
  • 2015-10-06
  • 1970-01-01
  • 2016-03-27
相关资源
最近更新 更多