【问题标题】:Bind subset of collection绑定集合的子集
【发布时间】:2012-03-08 16:44:42
【问题描述】:

我有一个ObservableCollection<Person> 对象。 Person 对象具有NameType 属性,其中Typestudentteacher。有没有办法将ComboBox 绑定到ObservableCollection<Person> 对象的子集,其中Type 属性只有teacher

【问题讨论】:

    标签: c# wpf data-binding


    【解决方案1】:

    ICollectionView 是你的答案 -

    public ICollectionView Teachers
    {
       get
       {
          // Persons is your ObservableCollection<Person>.
          var teachers = CollectionViewSource.GetDefaultView(Persons);
          teachers.Filter = p => (p as Person).Type == "Teacher";
          return teachers;
       }
    }
    

    您可以将您的组合框 ItemSource 与此属性绑定。当从源集合中添加或删除任何项目时,将自动过滤此集合。..

    【讨论】:

    • 我参加聚会有点晚了,但有点错别字:var teachers 应该是 var source
    • @MickaelV。 - 谢谢..更新..!!
    【解决方案2】:

    这对你有帮助

    WPF Binding to a Combo using only a subset of a Collection's items

    这里提到了一些概念,如 CollectionViewSource、Filters ecc...

    也看看

    Data bind to a portion of a collection

    【讨论】:

    • 谢谢,这两个问题有一些很好的信息和链接。
    【解决方案3】:

    您可以按以下方式以编程方式执行此操作:

    MyComboBox.ItemsSource = a.Where((obj, r) => { return (obj.Type == "student"); }).ToList();
    

    【讨论】:

    • 谢谢,这是我所知道的最干净、最明显的过滤方式。
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多