相同的ItemSource,但每个列表框都有另一个View

时间:2011-09-10 13:17:35

标签: c# wpf data-binding listbox

以下是我的情况:

存在一个ObservableCollection,窗口中的一系列列表框显示了它们的绑定数据。

public Records myRecents;

//...

this.lbToday.ItemsSource = myRecents;
this.lbYesterday.ItemsSource = myRecents;
this.lbBefore2Days.ItemsSource = myRecents;
this.lbLast7Days.ItemsSource = myRecents;
this.lbLast30Days.ItemsSource = myRecents;

现在,我想将每个列表框应用于不同的过滤视图。

this.lbToday.Items.Filter = delegate(object item)
{
    return ((RecordItem)item).IsToday();
};

问题是,过滤器应用了所有使用相同itemsource的列表框。(在这种情况下, 'myRecents')

如何在每个列表框中应用不同的过滤器?

1 个答案:

答案 0 :(得分:2)

为每个ListBox提供不同的ListCollectionViews

this.lbToday.ItemsSource = new ListCollectionView(myRecents); 
this.lbYesterday.ItemsSource = new ListCollectionView(myRecents); 
this.lbBefore2Days.ItemsSource = new ListCollectionView(myRecents);
this.lbLast7Days.ItemsSource = new ListCollectionView(myRecents); 
this.lbLast30Days.ItemsSource = new ListCollectionView(myRecents);