有没有办法在xaml中隐藏ListView?

时间:2016-02-17 13:39:06

标签: c# wpf xaml listview visibility

我有以下问题。我的ListView具有灰色背景,当ListView为空时,您可以在窗口上看到一条小灰线。这看起来很难看,所以我想在它为空时隐藏整个ListView以避免这种情况。

我搜索了是否有样式属性来执行此操作,但我找到的唯一内容是如何隐藏ListViewItem或ListViewHeader。有人有想法解决这个问题,必须有一些东西。

2 个答案:

答案 0 :(得分:2)

创建Converter,当Visibility.Collapsed引用的集合为空时,返回ItemsSource

例如:

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

答案 1 :(得分:2)

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