以编程方式将StackPanel添加到ComboBoxItem

时间:2014-08-28 15:54:33

标签: c# wpf combobox wpf-controls

我有一个基于WPF构建的Windows程序。我通过使用ini文件使最终用户可以更加自定义。目前我有一个包含多个项目的ComboBox,以及ComboBox各部分之间的StackPanel:

enter image description here

这是XAML:

<ComboBox Grid.ColumnSpan="2" Grid.Column="0" HorizontalAlignment="Stretch" Margin="75,0,5,5" Grid.Row="1" VerticalAlignment="Top">
    <ComboBoxItem IsEnabled="False">
        <StackPanel>
            <TextBlock Text="50% Margin" />
            <Rectangle />
        </StackPanel>
    </ComboBoxItem>
    <ComboBoxItem Content="Windows" Uid="0" />
    <ComboBoxItem Content="Gutters" Uid="0" />
    <ComboBoxItem Content="Insulation" Uid="0" />
    <ComboBoxItem Content="Doors" Uid="0" />
    <ComboBoxItem IsEnabled="False">
        <StackPanel>
            <TextBlock Text="50% Margin, No Overage" />
            <Rectangle />
        </StackPanel>
    </ComboBoxItem>
    <ComboBoxItem Content="Kitchens" Uid="1" />
    <ComboBoxItem Content="Bathrooms" Uid="1" />
    <ComboBoxItem Content="Additions" Uid="1" />
    <ComboBoxItem Content="Basements" Uid="1" />
    <ComboBoxItem IsEnabled="False">
        <StackPanel>
            <TextBlock Text="35% Margin" />
            <Rectangle />
        </StackPanel>
    </ComboBoxItem>
    <ComboBoxItem Content="Siding" Uid="2" />
    <ComboBoxItem Content="Roofing" Uid="2" />
</ComboBox>

如何以编程方式在ComboBox项目中添加StackPanel?对我来说不幸的是,ComboBoxItem没有子属性,这会让这很容易。

1 个答案:

答案 0 :(得分:1)

ComboBoxItem有一个Content属性可以做你想做的事。

通常,如果您想知道元素的XAML内容映射到哪个属性,请走继承层次结构并查找[ContentPropertyAttribute]属性。

ComboBoxItem继承自ListBoxItemContentControl本身继承自[ContentPropertyAttribute("Content")],其标记为&#34;&#34;与{{1}}。 :)