Voici une façon, en utilisant un style sur la zone de liste déroulante avec des déclencheurs pour définir le ItemTemplate dynamiquement:
Edit: Modification du style dans une ressource. Notez que ceci est toujours lié directement à la CheckBox en utilisant la liaison d'éléments - si vous voulez qu'elle soit plus flexible, vous pouvez lier la propriété IsChecked de CheckBox à une propriété de votre ViewModel et vous fier à cette modification plutôt qu'à IsChecked.
Avançons le style dans la section Ressources de notre fenêtre:
<Window.Resources>
<Style x:Key="myStyle" TargetType="ComboBox">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,ElementName=chk}" Value="True">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ID}" />
<TextBlock Text=": " />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
Maintenant, nous définissons la case correspondante et un couple de ComboBoxes qui en dépendent:
<CheckBox x:Name="chk" Content="Click Me" />
<ComboBox ItemsSource="{Binding}" Style="{StaticResource myStyle}" />
<ComboBox ItemsSource="{Binding}" Style="{StaticResource myStyle}" />
Yo, quelle langue? –
Emettre une liste de valeurs sur le client/ou un tableau. Ajoutez les éléments dans la liste en effectuant une manipulation de chaîne appropriée dans la liste lorsque vous ajoutez les éléments à la liste déroulante. – brumScouse