我目前正在嘗試爲組合框中選定的項目顯示正確的樣式。我這樣做的原因是,我對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