我有一个包含多行的网格。我想根据属性隐藏/显示其中一行。那可能吗?
在我的例子中,我有两个网格行。一个具有属性网格,另一个具有列表框。列表框绑定(bind)到一个对象,列表项绑定(bind)到该对象内的数组。我想要的是在数组为空时隐藏行(包括列表框)。因此,当我的对象数组为空时,您应该只会看到一个带有属性网格的窗口,没有其他任何东西。
谢谢!
最佳答案
是的。将 ListBox 的 Visibility 属性绑定(bind)到包含该数组的对象。然后应用一个自定义值转换器,该转换器将查看数组并查看它是否为空。如果为空,则返回 Visibility.Collapsed。否则,返回 Visibility.Visible。然后确保您的 RowDefinition 的高度为 Auto,当 ListBox 折叠时它会自动收缩为空。
您的值转换器看起来像这样:
public class EmptyVisiblityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
YourObject yourObject = value as YourObject;
return yourObject.YourArray.Count > 0 ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
您的 XAML 应如下所示:
<Window.Resources>
<local:EmptyVisiblityConverter x:Key="emptyVisibilityConverter"/>
</Window.Resources>
...
<ListBox Visibility="{Binding Path=YourObject, Converter={StaticResource emptyVisibilityConverter}}"/>
关于c# - 根据属性显示/隐藏网格行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112105/