Bien, pour ajouter un MenuItem vous aurez besoin de quelque chose le long de ces lignes:
var menuItem =newMenuItem(){Header="Menu Name",Name="Identifier",IsCheckable=true,IsChecked= visible };
menuItem.Click+=newRoutedEventHandler(contextMenu_onClick);int position = contextMenu.Items.Add(menuItem);
(mais vous avez probablement déjà eu ce).
Vous aurez besoin de certains, une façon de lier l'élément de menu à la propriété - mais sans voir votre demande je ne peux pas vraiment vous proposer la meilleure manière. Il y a la propriété Tag qui stocke un objet; l'Uid de la propriété qui stocke une chaîne de caractères; le Nom de la propriété qui stocke également une chaîne de caractères.
Tout:
menuItem.Visibility=Visibility.Visible;
et
menuItem.Visibility=Visibility.Collapsed;
doit activer /désactiver la visibilité de l'élément.
EDIT: à l'Aide de Effondré permet de masquer l'élément de menu et de ne pas réserver de l'espace dans le menu - vous ne voulez pas vraiment d'espaces vides dans un menu contextuel. (grâce à Botz3000 pour cela)
Ensuite dans votre code où la valeur de la propriété est changé, vous aurez à trouver l'élément de menu que vous souhaitez afficher/cacher l'aide du lien que j'ai décrit ci-dessus. Une fois que vous avez l'élément que vous pouvez changer sa valeur:
Êtes-vous sûr que vous voulez masquer le MenuItem? Il est plus fréquent de le désactiver, l'utilisation de WPF commandant du cadre:
<MenuItemHeader="_MenuName"Command="{x:Static local:MyCommands.SomeCommand}"/>
...
<!-- In the menu item or any of its ancestors: --><SomeControl.CommandBindings><CommandBindingCommand="{x:Static local:MyCommands.SomeCommand}"Executed="Save_Executed"CanExecute="Save_CanExecture"/></SomeControl.CommandBindings>
WPF utilisera le bool résultat de Save_CanExecute pour déterminer si le MenuItem's de commande peut actuellement exécuter, et d'activer/de désactiver le MenuItem en conséquence.
Bien, pour ajouter un MenuItem vous aurez besoin de quelque chose le long de ces lignes:
(mais vous avez probablement déjà eu ce).
Vous aurez besoin de certains, une façon de lier l'élément de menu à la propriété - mais sans voir votre demande je ne peux pas vraiment vous proposer la meilleure manière. Il y a la propriété Tag qui stocke un objet; l'Uid de la propriété qui stocke une chaîne de caractères; le Nom de la propriété qui stocke également une chaîne de caractères.
Tout:
et
doit activer /désactiver la visibilité de l'élément.
EDIT: à l'Aide de Effondré permet de masquer l'élément de menu et de ne pas réserver de l'espace dans le menu - vous ne voulez pas vraiment d'espaces vides dans un menu contextuel. (grâce à Botz3000 pour cela)
Ensuite dans votre code où la valeur de la propriété est changé, vous aurez à trouver l'élément de menu que vous souhaitez afficher/cacher l'aide du lien que j'ai décrit ci-dessus. Une fois que vous avez l'élément que vous pouvez changer sa valeur:
Merci - j'ai mis à jour la réponse
OriginalL'auteur ChrisF
Êtes-vous sûr que vous voulez masquer le
MenuItem
? Il est plus fréquent de le désactiver, l'utilisation de WPF commandant du cadre:WPF utilisera le
bool
résultat deSave_CanExecute
pour déterminer si leMenuItem
's de commande peut actuellement exécuter, et d'activer/de désactiver leMenuItem
en conséquence.OriginalL'auteur Matthew