0

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

4

2 回答 2

3

您应该看看CollectionViewSource它的过滤功能。

如果您想在纯 MVVM 中进行过滤,您可以让您的视图模型公开一个 type 属性ICollectionView,应用您想要的任何过滤器,然后从 XAML 绑定到该属性。

视图模型:

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}"/>
于 2013-06-01T00:09:54.870 回答
2

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

于 2013-06-01T00:09:21.120 回答