Я не могу установить ContentTemplate для ComboBoxItem. Причина, по которой я пытаюсь это сделать, заключается в том, что я хочу, чтобы мои данные отображались в поле со списком 2 раза. Когда поле со списком открыто (меню не работает), я хочу текстовое поле (с именем изображения) и элемент управления изображением под ним. Когда я выбираю элемент, я хочу, чтобы в поле со списком просто отображалось текстовое поле с названием изображения.
Я думал, что смогу добиться этого, изменив ItemTemplate и ItemContainerStyle ComboBox. ItemContainerStyle содержит следующий ContentPresenter:
<ContentPresenter HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
Итак, я предположил, что я мог бы просто установить ContentTemplate здесь, и он будет работать. Но я не могу заставить его работать:
<DataTemplate x:Key="ComboBoxDataTemplate">
<Grid>
<TextBlock Text="{Binding Path='Name'}"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="ComboBoxItemTemplate">
<StackPanel>
<TextBlock Text="{Binding Path='Name'}"/>
<Image Source="{Binding Path='Source'}" Width="64" Height="64"/>
</StackPanel>
</DataTemplate>
<Style x:Key="ComboBoxItemStyle1" TargetType="ComboBoxItem">
...
<Setter Property="ContentTemplate" Value="{StaticResource ComboBoxItemTemplate}"/>
...
Вот мое поле со списком:
<ComboBox Width="70" Margin="3,0,0,0"
ItemsSource="{StaticResource Source}"
ItemTemplate="{StaticResource ComboBoxDataTemplate}"
ItemContainerStyle="{StaticResource ComboBoxItemStyle1}"
/>
Единственный способ заставить это работать - удалить ContentPresenter из ItemContainerStyle и заменить его содержимым моего пользовательского шаблона (ComboBoxItemTemplate). Но я не думал, что должен использовать этот подход, поскольку это означает, что ContentPresenter больше не существует (и код в ComboBox может полагаться на его существование).
Любая помощь в отображении поля со списком с другим раскрывающимся списком и выбранным шаблоном будет принята с благодарностью!