0

我正在尝试将我的收藏绑定到列表框。该集合包含一些要隐藏并根据某些条件显示的项目。但是当我这样做时,替代样式没有正确应用。

例如:案例 1:所有项目都可见,我得到如下输出: Item1(grey) Item2(white) Item3(grey) Item4(white) Item5(grey) Item6(white) Item7(grey)

Case2:Item2 被隐藏的地方,我得到的输出为: Item1(grey) Item3(grey) Item4(white) Item5(grey) Item6(white) Item7(grey)

如何在不重新绑定集合的情况下解决此问题?

4

1 回答 1

0

您应该使用 a将它们过滤掉,而不是隐藏项目(可能在ListBoxItem控件模板中,或)。ListBox ItemTemplateCollectionViewSource

这是因为这些项目在技术上仍然存在 - 您看不到它们,但列表框可以。

有关过滤的详细信息,请参阅此链接。 http://wpftutorial.net/DataViews.html

要过滤集合视图,您可以定义一个回调方法来确定该项目是否应该是视图的一部分。该方法应具有以下签名:bool Filter(object item)。现在将该方法的委托设置为 CollectionView 的 Filter 属性,您就完成了。

ICollectionView _customerView = CollectionViewSource.GetDefaultView(customers);
_customerView.Filter = CustomerFilter

private bool CustomerFilter(object item)
{
    Customer customer = item as Customer;
    return customer.Name.Contains( _filterString );
}
于 2013-10-04T07:29:36.553 回答