我有一些带有一些行的网格。行的高度相对于窗口大小设置如下:
<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
工作正常,但该行仍需要原始空间。
当内容的Visiblity折叠时,有没有办法隐藏行?注意:我不想将Height
中的RowDefinition
设置为Auto
,因为我无法将Height
相对设置为窗口大小和高度该行调整到行内部内容的高度。
答案 0 :(得分:1)
您可以将行的Height属性绑定到binded属性。
然后你需要一个从typeof(binded属性)到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();
}
}