画像とテキストとして表示されるアイテムがほとんどないコンボボックスがあります(アイテムごとに並べて配置されます)。コンボボックスリストから項目を選択すると、コンボボックスの選択項目領域に別のテキストまたは別の画像 (同じ画像とテキストではなく) を表示したいと思います。
私がそれを達成できる方法はありますか?
画像とテキストとして表示されるアイテムがほとんどないコンボボックスがあります(アイテムごとに並べて配置されます)。コンボボックスリストから項目を選択すると、コンボボックスの選択項目領域に別のテキストまたは別の画像 (同じ画像とテキストではなく) を表示したいと思います。
私がそれを達成できる方法はありますか?
最も簡単な方法は、Combobox の DataTemplate(Itemstemplate) に IsSelected トリガーを追加することです。通常のデータ表示用と選択したビジュアル用の 2 つの Visual 要素グループがあると思います。IsSelected プロパティが ComboboxItem に設定されている場合に必要です通常のビジュアルを非表示にし、もう一方のビジュアルを表示します。ここでの本当の秘訣は、FindAncestor を使用して選択された直接のComboBoxItemユーザーを見つけることです。
<DataTemplate x:Key="yourDataTemplate">
<Grid x:Name="regularVisuals" > ... </Grid>
<Grid x:Name="selectedVisuals" Visibility="Collapsed"> ... </Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ComboBoxItem}},Path=IsSelected}" Value="True">
<Setter TargetName="regularVisuals" Property="Visibility" Value="Visible"/>
<Setter TargetName="selectedVisuals" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
いくつかの方法が考えられますが、そのうちの 1 つはDataTemplates と Data template selectorsを使用することです。