У меня есть программа Windows, построенная на WPF. Я делаю его более настраиваемым для конечного пользователя, используя INI файл. В настоящее время у меня есть ComboBox с несколькими элементами, а StackPanel между разделами ComboBox:
Вот 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>
Как добавить StackPanel внутри элемента ComboBox программно? К сожалению, для меня ComboBoxItem не имеет дочернего свойства, которое сделало бы это очень легким.
ComboBoxItem
имеет свойство Content
которое должно делать то, что вы хотите.
В общем случае, если вы хотите узнать, к какому свойству принадлежит XAML-контент элемента, перейдите в иерархию наследования и найдите атрибут [ContentPropertyAttribute]
.
ComboBoxItem
наследует от ListBoxItem
который сам наследует ContentControl
который "помечен" с помощью [ContentPropertyAttribute("Content")]
. :)
ComboBoxItem
имеет свойствоContent
которое должно делать то, что вы хотите.Content
ограничен текстом. Я приведу это в движение и доложу.