绑定只列出具有特定属性的项
本文关键字:属性 绑定 | 更新日期: 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}"/>
您可能想要考虑一个集合视图,或者在视图模型中自己执行过滤。