C# 完全隐藏GridView(用作ListView的视图)中的元素?

C# 完全隐藏GridView(用作ListView的视图)中的元素?,c#,wpf,listview,converter,visibility,C#,Wpf,Listview,Converter,Visibility,我有一个列表视图和一个按钮。现在,当我按下按钮时,我只想显示满足所需条件的元素。我正在对项目的可见性使用转换器,但是如果我返回visibility.Hidden则项目只是不可见,但它们仍然占用空间。更好的替代方法是使用Visibility.collazed,它收缩并隐藏项目,但仍然会占用一些空间。我需要将它们完全从列表视图中删除 下面是XAML代码(我知道它不是很干净,但因为我有一个宽监视器,所以行比列少更容易): 您可以根据按钮状态使用属性将集合(SveHale.Hala1)包装在中。例如,如

我有一个
列表视图和一个按钮。现在,当我按下按钮时,我只想显示满足所需条件的元素。我正在对项目的可见性使用转换器,但是如果我返回
visibility.Hidden
则项目只是不可见,但它们仍然占用空间。更好的替代方法是使用Visibility.collazed
,它收缩并隐藏项目,但仍然会占用一些空间。我需要将它们完全从
列表视图中删除

下面是XAML代码(我知道它不是很干净,但因为我有一个宽监视器,所以行比列少更容易):


您可以根据按钮状态使用属性将集合(
SveHale.Hala1
)包装在中。例如,如果按钮状态是绑定到
FilterData
属性和
Hala1Wrapper
围绕
SveHale.Hala1
集合的包装:

public bool FilterData 
{
    set 
    {
        if (value) 
            Hala1Wrapper.Filter = itm => zauzet || ((Teren._Stanje)itm) == Teren._Stanje.Zatvoren;
        else 
            Hala1Wrapper.Filter = null;
    }
}
在XAML中,必须将
ListView
ItemsSource
绑定到
CollectionView
包装器

<ListView  ItemsSource="{Binding Path=SveHale.Hala1Wrapper}">


谢谢,这几乎完全有效。我确实有一个问题,我知道一个“肮脏”的方法来解决它,但我想知道是否有更干净的方法。也就是说,我有一张足球场和球队的名单。当我单击按钮(FilterData)时,字段列表应该只显示可用的字段,它确实显示了这些字段。但是,如果我在一个字段上拖动一个团队(为了占据它),该字段将不再可用(它将变为灰色,(背景绑定到一个转换器进行检查),但我也希望它从列表中消失。我可以再次调用过滤器,但我可以以某种方式通知它吗?如果我理解正确,您需要调用方法
public bool FilterData 
{
    set 
    {
        if (value) 
            Hala1Wrapper.Filter = itm => zauzet || ((Teren._Stanje)itm) == Teren._Stanje.Zatvoren;
        else 
            Hala1Wrapper.Filter = null;
    }
}
<ListView  ItemsSource="{Binding Path=SveHale.Hala1Wrapper}">