从静态资源创建组合框

时间:2015-08-08 07:09:49

标签: c# wpf

我在listview中定义了以下资源:

<local:FillPatternDefinition x:Key="deleteItem" TypeName="Delete Regions" ItsId="-1"/>

以及以这种方式定义的listview托管的组合框:

<ComboBox
        Name="changeComboBox"
        Width="100"
        DisplayMemberPath="TypeName"
        <ComboBox.ItemsSource>
            <CompositeCollection>
                <ComboBoxItem Foreground="Black" Background="Salmon" Content="{StaticResource deleteItem}"/>
                <CollectionContainer Collection="{Binding Source={StaticResource theComboBoxDataView}}" />
            </CompositeCollection>
        </ComboBox.ItemsSource>
</ComboBox>

问题是复合集合中的comboxitem。在下拉框中,我看到了类名(FillPatternDefinition),但是当我选择它时,TypeName“删除区域”在组合框中正确显示。 collectioncontainer拥有相同类别的项目,但这些项目都显示并正常工作。

我是否需要将静态资源包装在其他类中以使其在下拉列表中正常工作?

1 个答案:

答案 0 :(得分:0)

您不应在CompositeCollection中显式创建ComboBoxItem,因为ComboBox内部为其ItemsSource集合中的每个元素创建ComboBoxItems。改为使用StaticResource

<ComboBox.ItemsSource>
    <CompositeCollection>
        <StaticResourceExtension ResourceKey="deleteItem"/>
        <CollectionContainer
            Collection="{Binding Source={StaticResource theComboBoxDataView}}" />
    </CompositeCollection>
</ComboBox.ItemsSource>

设置第一项的ForegroundBackground可以在ComboBox的ItemContainerStyle中完成。