使用枚举值在Combobox中添加其他项目

时间:2012-11-14 01:40:02

标签: wpf mvvm

我使用wpf组合框来显示和选择枚举“BloodGroup”BloodGroup Enum定义为。

    public enum BloodGroup : byte {
    A_Positive,
    A_Negative,
    B_Positive,
    B_Negative,
    AB_Positive,
    AB_Negative,
    O_Positive,
    O_Negative,
    }

这是用于在上面使用枚举项填充组合框的wpf组合框代码。

<UserControl.Resources>
    <ObjectDataProvider x:Key="BloodGroupEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="enums:BloodGroup" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</UserControl.Resources>

<ComboBox x:Name="BloodGroupFilter" ItemsSource="{Binding Source={StaticResource BloodGroupEnum}}" 
              cal:Message.Attach = "[Event SelectionChanged] = [Action BloodGroupFilterChanged(BloodGroupFilter)]"/>

我使用上面的组合框来过滤datagrid的行。要取消过滤器,我需要在组合框中显示“取消过滤器”的其他项目。如何添加其他项目 在上面的组合框中将用于取消过滤器。

1 个答案:

答案 0 :(得分:1)

您可以将不同的集合与CompositeCollection

组合在一起
<ComboBox x:Name="BloodGroupFilter">
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <CollectionContainer Collection="{Binding Source={StaticResource BloodGroupEnum}}"/>
            <sys:String>Cancel Filter</sys:String>
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>