只绑定有特定属性的
列表项我当前必然要在我看来,一个列表框的ObservableCollection<MyObject>
。 MyObject
有一个枚举属性,我们会打开和关闭(以及其他属性)。使用绑定,有没有办法过滤集合并只显示打开或关闭的项目?只绑定有特定属性的
你应该看看CollectionViewSource
和过滤功能。
如果你想要做纯MVVM过滤,你可以有你的ViewModel揭露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}"/>
你可能要考虑一个collection view,或执行视图模型中筛选自己。
是否可以过滤'CollectionViewSource'纯XAML或者你需要的代码隐藏? –
@DennisE:有时它是不容易,但任何你可以在XAML做可以做的代码隐藏,反之亦然。 –
@DennisE:一个简单的搜索返回这个...... http://stackoverflow.com/questions/6461826/in-wpf-can-you-filter-a-collectionviewsource-without-code-behind –
是否可以在纯XAML中过滤“CollectionViewSource”或者是否需要隐藏代码? –
您可以通过在视图模型中进行过滤来过滤纯MVVM中的集合而不存在隐藏代码。看到我更新的答案。 –
这工作。我将不得不围绕它来修复一些与我的代码相关的问题,但这肯定会让我走上正轨。谢谢! –