我有两个列表框,两个都将项目源设置为MyList。在listbox1中我想根据一些谓词来过滤条目。我通过以下代码来实现
ICollectionView listview= CollectionViewSource.GetDefaultView(MyList);
listview.filter(predicate)
我的问题是我不希望将此过滤应用于listbox2,但对我来说保留一个itemsource非常重要。如何实现这一目标。
<ListBox Name="listbox1" ItemsSource="{Binding MyList}"/>
<ListBox Name="listbox2" ItemsSource="{Binding MyList}"/>
我尝试将VirtualizingStackpanel.IsVirtualizing设置为false,但它不起作用。
答案 0 :(得分:0)
您可以创建一个需要过滤的集合视图源,并将其视图绑定到列表框,而不是将源集合绑定到列表框。
public CollectionViewSource ViewSource1 { get; set; }
ViewSource1 = new CollectionViewSource { Source = MyList};
ViewSource1.View.Filter(predicate1)
然后将视图源的视图绑定到第一个列表框。您可以将源集合绑定到第二个列表框。
<ListBox Name="listbox1" ItemsSource="{Binding ViewSource1.View}"/>
<ListBox Name="listbox2" ItemsSource="{Binding MyList}"/>