В настоящее время я пытаюсь написать правильный стиль для элемента, отображаемого как выбранный в combobox. Причина, по которой я это делаю, заключается в том, что у меня нет большого контроля над тем, как 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
, он правильно отображается в ComboBox. С другой стороны, если я - например, - отображает кнопку с некоторым контентом, то взамен получаю текст System.Windows.Shapes.Rectangle
, что далеко от того, что я хочу отобразить.
Я хотел бы использовать разные шаблоны для разных типов данных, отображаемых в ComboBox - я смогу настроить их внешний вид. Как я могу это достичь?
Edit:
Чтобы быть совершенно ясно, я говорю о выбранной (=), выбранного ComboBox элемента в этом контексте:
(не о выбранной ComboBox item в списке ComboBox)
Можете ли вы предоставить небольшой пример того, как можно встроить, что ContentTemplateSelector в моей DataTemplate? – Spook
Вы посмотрели ссылки? –
Я сделал, но 'ComboBox', похоже, не имеет свойства ContentTemplateSelector. – Spook