Encore un problème bidon auquel je ne trouve pas de solution miracle :
J'ai une appli avec un bon menu (plus proche de photoshop que de notepad). Mon souci, c'est de gérer intelligemment le fait que certains MenuItems soient cochés ou pas.
Je dois donc faire le lien entre l'action courante et les MenuItems checkables.
Les actions sont gérées dans mon appli par le design pattern Command. Je conserve la commande courante dans une propriété accessible via un singleton CommandManager qui implémente INotifyPropertyChanged.
J'ai plusieurs idées pour résoudre ce problème mais aucune n'est convaincante, et comme c'est un problème très commun, je pense qu'il y a un mécanisme en WPF pour gérer ca intélligemment. En gros, je pense (enfin, j'espère) qu'il y a un truc comme les RoutedCommand qui au lieu de griser le Menu, indiquerait s'il est coché ou pas.
Voici les quelques solutions envisageables :
1) Abonner manuellement chaque MenuItem à INotifyPropertyChanged, et gérer le check dans le handler : MonMenu.IsChecked = (MaPropriété == PropriétéAttendue)
2) Pour éviter les multiples abonnement ci-dessus, faire un binding OneWay entre le dataContext du menu et la propriété. Et à chaque changement, mettre à jour tous les MenuItems
3) Dans mon commandManager, exposer autant de propriétés qu'il y a d'actions (IsAction1, IsAction2, ...) et du coup, je peux faire un simple binding entre isChecked et la propriété qui m'intéresse.
Qu'est ce que vous en dites ?
Partager