wpf用combobox填充列表

时间:2013-05-16 12:30:24

标签: c# wpf data-binding

我一直在寻找信息,但不是我问题的完整解决方案

我正在寻找一种方法来使用comboBox作为将在listView中显示的项目的选择器/过滤器, 其中comboBox和listView项具有相同的枚举属性(重要性)。

稍后我想在列表中添加一个checkbox属性,但首先我要实现第一步。

我的问题是我在定义之间有点迷失,我不知道如何处理这个问题。

修改 我会试着澄清我的问题:

我希望有一个comboBox包含代表消息重要性的项目(来自Emun)(等等,常规,重要..)。 选择项目后,将显示具有该重要性的所有消息。

我有这个纯粹基于代码的示例,没有任何数据绑定。 Example

2 个答案:

答案 0 :(得分:2)

我假设您的意思是您拥有一个具有特殊类型属性的对象列表,并且您希望根据该属性的值过滤此列表。我还假设您了解通常用于开发WPF应用程序的MVVM模式:

您的viewmodel需要枚举类型的属性。让我们称之为SelectedFilter。 您的viewmodel需要一个包含所有现有枚举值的列表。让我们称之为AvailableFilters。 您的viewmodel需要所有消息的列表。让我们称之为Messages。 您的viewmodel需要一些消息列表。让我们称之为FilteredMessages

您的ViewModel需要实现INotifyPropertyChanged

您的AvailableFilters绑定到ComboBox的ItemsSource。 您的SelectedFilter绑定到ComboBox的SelectedItem。 您的FilteredMessages绑定到ListBox的ItemsSource

每当SelectedFilter更改时,请使用LinQ(或循环)仅将那些Messages放入适合的FilteredMessages。确保您也为FilteredMessages发出NotifyPropertyChanged信号。

在短时间内提供了大量信息,如果您觉得自己不确定我在说什么,请务必在Data Binding in WPFINotifyPropertyChangedMVVM上阅读一些教程

答案 1 :(得分:0)

对于类似这样的东西,我会有一个包含列表中所有项目的集合(可观察)。将组合框绑定到枚举值列表。您需要将CollectionView放在Observable Collection之上。随着枚举在组合框中更改 - 您将新筛选器应用于集合视图源。显示过滤数据的UI应绑定到集合视图源 - 而不是可观察集合。