Resizing WPF Grid Column when other Columns children is collapsed?

≯℡__Kan透↙ 提交于 2019-12-11 11:35:55

问题


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>

回答1:


what about using a converter? Such as

in Window resources

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

Finally the code of the converter is

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


来源:https://stackoverflow.com/questions/13286029/resizing-wpf-grid-column-when-other-columns-children-is-collapsed

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!