J'ai lié un MenuItem à un Enum en utilisant this solution. Les valeurs énumérées sont affichées correctement, mais je n'arrive pas à définir une valeur vérifiée par défaut pour les éléments enfants du MenuItem.Comment définir la propriété IsChecked d'un objet de type MenuItem pour un enfant de type Enum via XAML?
Autrement dit, je voudrais que le MenuItem ait un de ses éléments enfants (les valeurs de l'énumération que j'utilise) cochée par défaut.
J'ai essayé le code suivant, en utilisant un style et un Setter déclenché:
<ContextMenu>
<MenuItem Header="Some Setting" Name="SomeSettingMenu" DataContext="{Binding}"
ItemsSource="{Binding Source={StaticResource DisplayTypeValues}}"
Click="SomeSettingClicked">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="MenuItem.IsCheckable" Value="True"/>
<Style.Triggers>
<Trigger Property="MenuItem.Header" Value="enums:AnEnum.ItemA" >
<Setter Property="MenuItem.IsChecked" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</ContextMenu>
ENUM contient des valeurs telles que Itema, j'ai aussi essayé AnEnum.First
ou 0
dans l'attribut Valeur de déclenchement (comme answered here), en vain.
Un code DataTrigger
serait-il souhaitable? Si oui, comment puis-je écrire cela en XAML? Ou devrais-je utiliser un DataTemplate
dans un ItemTemplate
pour le MenuItem
?
J'ai également essayé de bidouiller avec du code-behind avec des méthodes liées SomeSetting.Items
, mais la plupart des propriétés (telles que Current) sont en lecture seule.
Je suis conscient que vous pouvez écrire SomeSettingMenu.ItemsSource = Enum.GetValues(typeof(....))
dans le code-behind, mais encore une fois je ne sais pas comment sélectionner un élément dans le MenuItem par programmation.
J'ai aussi essayé ce code, ne fonctionne pas aussi bien:
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Header}" Value="enums:DisplayType.ItemA">
<Setter Property="IsChecked" Value="True" />
</DataTrigger>
</Style.Triggers>
enums
est un espace de noms à partir d'un assemblage différent j'utilise.
Toutes les pensées seraient appréciées, merci d'avance!
J'ai trouvé cet article (http://neilmosafi.blogspot.com/2007/08/feb-07-using-combobox-to-select-enum.html) mais quand j'essaie de l'adapter à mon MenuItem une belle apparence est lancée. Des pensées ? – Dr1Ku