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