0

我有一个带有一些行的网格。行的高度是相对于窗口大小设置的,如下所示:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="0.3*" />
        <RowDefinition Height="0.2*" />
        <RowDefinition Height="0.2*" />
        <RowDefinition Height="0.1*" /> <!-- hide this row -->
        <RowDefinition Height="0.2*" />
    </Grid.RowDefinitions>
</Grid>

现在我想根据绑定属性隐藏一行的内容。因此我将Visiblity内容对象的属性设置为Collapsed. 内容的Visiblity工作正常,但该行仍然需要原始空间。

当内容的可见性折叠时,有没有办法隐藏该行?注意:我不想在 to 中设置HeightRowDefinition因为Auto我无法将Height相对设置为 Window 大小,并且行的高度会调整为行内内容的高度。

4

1 回答 1

1

您可以将行的 Height 属性绑定到绑定的属性。

然后你需要一个从 typeof(binded property) 到 System.Windows.GridLength 的转换器(IValueConverter 的实现)。

也许像

[ValueConversion(typeof(System.Windows.Visibility), typeof(System.Windows.GridLength))]
public class VisibToHeightConv : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool b = (boolean)value;

        if (b == true)
            return new System.Windows.GridLength(0, System.Windows.GridUnitType.Star);
        else
            return new System.Windows.GridLength(80, System.Windows.GridUnitType.Star);
    }

    public object ConvertBack(object value, Type targetType, object parameter,   System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
于 2012-06-06T07:34:09.313 回答