我在这里关注此链接:http://jacobmsaylor.com/?p=1270

但我遇到了问题,试图对其进行调整

<ListBox Name="PageList_ListBox" MouseDoubleClick="PageList_ListBox_OnMouseDoubleClick"
                             Background="#FFC9C9C9" Margin="0,5,0,0" ItemsSource="{Binding PageCollection, ElementName=This}">




public static ObservableCollection<MLBPage> _PageCollection = new ObservableCollection<MLBPage>();
public static ObservableCollection<MLBPage> PageCollection
        {
            get { return _PageCollection; }
        }

public ICollectionView _PageCollectionView { get; set; }

_PageCollectionView = CollectionViewSource.GetDefaultView(_PageCollection);

private bool FilterLeadersList(object item)
{
  MLBPage page = item as MLBPage;
  if (page.templateName.Contains("Leaders List"))
  {
    return true;
  }
  else
  {
    return false;
  }
}


我的MLBPage对象有2种类型...现在,当我通过添加按钮来过滤集合时,“ templateName”可以是“ Leaders List”或“ Leader Headshots ..”。

_PageCollectionView.Filter = FilterLeadersList;


整个集合只是过滤器(绑定到列表框的_PageCollection变为空白),而不是仅过滤名称中包含“领导者列表”的项目。

我如何修改它的任何帮助工作?

最佳答案

将您的代码更改为:

 private ObservableCollection<MLBPage> _PageCollection = new ObservableCollection<MLBPage>();
 public ICollectionView _PageCollectionView { get; set; }


只需执行一次(例如在ctor中)

 //ctor
 _PageCollectionView = CollectionViewSource.GetDefaultView(_PageCollection);
 _PageCollectionView.Filter = FilterLeadersList,


使用clear,add,remove更改您的_PageCollection。

将列表框绑定到视图

<ListBox ItemsSource="{Binding _PageCollectionView}"/>


使用刷新来刷新您的过滤器

 _PageCollectionView.Refresh();

关于c# - 过滤ObserverableCollection以仅显示某些项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22541686/

10-10 19:59