有没有办法在 xaml 中隐藏 ListView?
Is there a way to hide a ListView in xaml?
我有以下问题。我的 ListView 有一个灰色背景,当 ListView 为空时,您可以在 window 上看到一条灰色小线。这看起来很难看,所以我想在它为空时隐藏整个 ListView 以避免这种情况。
我搜索了是否有样式 属性 可以执行此操作,但我找到的唯一内容是如何隐藏 ListViewItem 或 ListViewHeader。有人有解决这个问题的想法,必须有一些东西。
当您的 ItemsSource
引用集合为空时,创建 Converter
returns Visibility.Collapsed
。
例如:
<ListView ItemSource="{Binding MyCollection}" Visibility="{Binding MyCollection, Converter={StaticResource EmptyCollectionConverter}}"/>
您的 IValueConverter.Convert()
实施看起来像:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var coll = value as IEnumerable<object>;
return (coll.Count() > 0) ? Visibility.Visible : Visibility.Collapsed;
}
更新: 来自 another answer 关于如何使用样式绑定到 Collection.Count
:
<YourControl.Style>
<Style TargetType="YourControl">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding MyList.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</YourControl.Style>
<ListView ItemSource="{Binding MyCollection}">
<ListView.Style>
<Style TargetType="ListView">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListView.Style>
...
</ListView>
我有以下问题。我的 ListView 有一个灰色背景,当 ListView 为空时,您可以在 window 上看到一条灰色小线。这看起来很难看,所以我想在它为空时隐藏整个 ListView 以避免这种情况。
我搜索了是否有样式 属性 可以执行此操作,但我找到的唯一内容是如何隐藏 ListViewItem 或 ListViewHeader。有人有解决这个问题的想法,必须有一些东西。
当您的 ItemsSource
引用集合为空时,创建 Converter
returns Visibility.Collapsed
。
例如:
<ListView ItemSource="{Binding MyCollection}" Visibility="{Binding MyCollection, Converter={StaticResource EmptyCollectionConverter}}"/>
您的 IValueConverter.Convert()
实施看起来像:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var coll = value as IEnumerable<object>;
return (coll.Count() > 0) ? Visibility.Visible : Visibility.Collapsed;
}
更新: 来自 another answer 关于如何使用样式绑定到 Collection.Count
:
<YourControl.Style>
<Style TargetType="YourControl">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding MyList.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</YourControl.Style>
<ListView ItemSource="{Binding MyCollection}">
<ListView.Style>
<Style TargetType="ListView">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</ListView.Style>
...
</ListView>