我目前正在尝试为组合框中选定的项目显示正确的样式。我这样做的原因是,我对ComboBox如何显示所选项目没有太多控制,例如 - 在深色背景下,该项目仍然显示为黑色。根据内容的样式
我想出了以下解决方案:
<DataTemplate x:Key="MyItem" DataType="ComboBoxItem">
<TextBlock Text="{Binding}" Foreground="White"/>
</DataTemplate>
<!-- (...) -->
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<!-- ... -->
<!-- Displaying currently selected item -->
<ContentPresenter Margin="2" IsHitTestVisible="False"
VerticalAlignment="Center" HorizontalAlignment="Stretch"
Name="ContentSite"
ContentTemplate="{StaticResource MyItem}"
Content="{TemplateBinding ComboBox.SelectionBoxItem}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在选择了简单ComboBoxItem
时,它正确地显示在组合框。另一方面,如果我 - 例如 - 显示带有一些内容的按钮,作为回应,我得到文本System.Windows.Shapes.Rectangle
,这与我想要显示的内容远远不同。
我想为ComboBox中显示的不同数据类型使用不同的模板 - 我将能够自定义它们的外观。我怎样才能做到这一点?
编辑:
要非常清楚,我说的是在这种情况下选择(=选择)ComboBox项:
(不是选择组合框的项目在组合框的列表)
能否请您提供一个小例子,请问有什么可以嵌入该ContentTemplateSelector在我的DataTemplate? – Spook
你看过链接吗? –
我做过,但'ComboBox'似乎没有'ContentTemplateSelector'属性。 – Spook