-1

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

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

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

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

编辑: 我会尽量澄清我的问题:

我想要一个组合框,其中包含表示消息重要性(等常规、重要..)的项目(来自 Emun)。选择项目时,将显示具有该重要性的所有消息。

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

4

2 回答 2

2

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

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

您的 ViewModel 需要实现INotifyPropertyChanged

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

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

在很短的时间内获得了很多信息,请确保您阅读了一些关于 的教程,Data Binding in WPF如果您不确定我在说什么。INotifyPropertyChangedMVVM

于 2013-05-16T13:31:08.863 回答
0

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

于 2013-05-16T13:33:36.687 回答