如何将通用项添加到绑定到WPF中的集合的ComboBox

Mik*_*e B 16 c# wpf combobox mvvm

我在WPF应用程序中有一个ComboBox,它绑定到C#ViewModel类中的Department对象的ObservableCollection.我想使用组合框按部门过滤另一个集合(现在它确实适用于此)问题是我想在列表顶部添加一个额外的选项"全部".有没有正确的方法来做到这一点.制作假部门在很多方面都是错误的.

ComboBox

<ComboBox ItemsSource="{Binding Path=Departments}" 
          SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

Sim*_*Fox 23

您可以使用CompositeCollection作为ComboBox的ItemsSource以包含"All"选项.您需要将CollectionContainer的Collection属性设置为"Department对象的ObservableCollection".

<ComboBox >
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ComboBoxItem>All</ComboBoxItem>
            <CollectionContainer x:Name="departmentCollection"/>
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

不确定这是否适合您的过滤情况但是......

  • 这个问题的解决方案有一个如何以这种方式绑定的例子http://stackoverflow.com/questions/1189052/why-is-compositecollection-not-freezable不是特别漂亮的IMO但是诀窍...... (2认同)