0

我有以下问题:在我的视图模型中,我有一个对象列表,该对象具有属性名称和值,这两个字符串都是字符串。我想将列表绑定到我视图中的组合框,但我只想显示具有特定名称的元素。对于列表:

名称 值
foo aaa
bar bbbb
foo ccc

我只想在组合框中显示名称为 foo、aaa 和 ccc 的元素。这里的问题是我想在视图中而不是在代码隐藏或视图模型中进行过滤。

查看代码:

<ComboBox IsEditable="True" VerticalAlignment="Top" 
      HorizontalAlignment="Left" Width="150" Margin="60,60,0,0" 
      ItemsSource="{Binding Elements}"  
      SelectedValue="{Binding Value}" SelectedValuePath="Value" 
      DisplayMemberPath="Value" />

视图模型代码:

private List<CustomChartElement> elements;
public List<CustomChartElement> Elements
    {
        get { return this.elements; }
    }
4

1 回答 1

1

您可以只添加一个执行过滤的属性并绑定到该属性,而不是您公开的列表。

如果您有多个组合框,并且每个组合框都需要根据不同过滤器逻辑过滤的基本列表的子列表,您将不得不考虑在模型中将每个列表实现为视图中的自己的属性。您也可以考虑将您的模型封装在一个容器类中,该类公开不同的列表,以免弄乱您的基本模型。

我发现了一个叫做命令绑定的想法。这是一个传递参数的示例。这可能是您正在寻找的东西。

由于它需要 ICommandSource,因此您可能需要查看有关如何为 Combobox 实现 ICommandSource的文章。

于 2013-07-23T14:38:26.267 回答