绑定只列出具有特定属性的项

本文关键字:属性 绑定 | 更新日期: 2023-09-27 18:16:16

我有一个ObservableCollection<MyObject>,目前绑定到我的视图中的ListBox。MyObject有一个枚举属性,我们将其称为On和Off(以及其他属性)。使用绑定,是否有一种方法可以过滤集合并仅显示打开或关闭的项目?

绑定只列出具有特定属性的项

你应该看看CollectionViewSource和它的过滤能力。

如果你想在纯MVVM中做过滤,你可以让你的视图模型暴露ICollectionView类型的属性,应用你想要的任何过滤器,然后从XAML绑定到该属性。

ViewModel:

public ICollectionView MyCollectionView { get; set; }
public ViewModel()
{
    var items = new List<string>
    {
        "Apple",
        "Orange"
    };
    MyCollectionView = CollectionViewSource.GetDefaultView(items);
    // Will only display items starting with "A".
    MyCollectionView.Filter = item => ((string)item).StartsWith("A");
}

XAML:

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

您可能想要考虑一个集合视图,或者在视图模型中自己执行过滤。