只绑定有特定属性的

只绑定有特定属性的

问题描述:

列表项我当前必然要在我看来,一个列表框的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}"/> 
+0

是否可以在纯XAML中过滤“CollectionViewSource”或者是否需要隐藏代码? –

+0

您可以通过在视图模型中进行过滤来过滤纯MVVM中的集合而不存在隐藏代码。看到我更新的答案。 –

+0

这工作。我将不得不围绕它来修复一些与我的代码相关的问题,但这肯定会让我走上正轨。谢谢! –

你可能要考虑一个collection view,或执行视图模型中筛选自己。

+0

是否可以过滤'CollectionViewSource'纯XAML或者你需要的代码隐藏? –

+0

@DennisE:有时它是不容易,但任何你可以在XAML做可以做的代码隐藏,反之亦然。 –

+0

@DennisE:一个简单的搜索返回这个...... http://stackoverflow.com/questions/6461826/in-wpf-can-you-filter-a-collectionviewsource-without-code-behind –