2010-02-28 3 views
4

Lorsque désactiver un contrôle dans WPF, comme dire un élément de menu commeWPF activer/commandes désactiver

MenuItem aMenuItem = ... 
aMenuItem.IsEnabled = false; 

le texte dans le MenuItem est toujours actif, c'est-il pas grisés que vous attendez quand les éléments sont désactivés.

Existe-t-il un moyen simple de faire cela non seulement pour les éléments du menu mais pour tout contrôle WPF?

Répondre

6

oui en utilisant des commandes. MenuItems et Buttons ont une propriété de commande. Une commande est une implémentation de l'interface ICommand qui a une méthode appelée CanExecute. Quand execute peut être appelée si elle retourne true, le menu ou le bouton est activé, sinon il est grisé.

MSDN Command overview

nice simple tutorial on setting up commands

google search :)

+0

je configurer les menuitems à l'aide de commandes, il n'est toujours pas grisé lorsque la méthode CanExecute est définie sur false. Merci – TheWommies

+1

avez-vous votre propre style sur les éléments de menu? Si vous avez, vous pouvez remplacer l'implémentation grisée par défaut. lorsque vous cliquez sur l'élément de menu qui doit être grisé, la méthode d'exécution de la commande est-elle activée? –

+2

Merci, c'était à peu près tout, j'ai un style global qui tagrète TextBlocks, donc je peux changer la couleur de tous les TextBlocks dans l'application. Il semble que MenuItems ait TextBlocks dans son arbre visuel. Vous ne savez pas comment contourner ce problème, j'ai donc le meilleur des deux mondes où je peux changer toutes les couleurs du texte et m'assurer qu'elles sont grisées lorsqu'elles sont désactivées. Je suppose que je dois écrire un modèle de contrôle qui cible MenuItems pour cela alors. Merci – TheWommies

-5

Vous pouvez aussi définir l'opacité du contrôle à 0,5, pour obtenir les "grisés" effet

Questions connexes