WPF: Comment générer dynamiquement ContextMenu
J'ai ListBox (avec SelectionMode=Étendue) qui dispose de plusieurs articles et je veux ajouter menu contextuel de la fonctionnalité. Le problème est de savoir comment créer dynamiquement menu contextuel basé sur certaines conditions. Par exemple. Je voudrais montrer régulier menu contextuel si un seul objet est sélectionné, mais pour montrer aux autres le menu contextuel (par exemple. avec quelques nouveaux éléments ajoutés) lorsque plus d'un élément est sélectionné. En outre, j'aimerais créer un troisième type de menu contextuel si parmi l'élément sélectionné est au moins un qui a une certaine propriété définie. Etc... il peut y avoir plusieurs conditions comme celles-ci.
Essentiellement, j'ai besoin de générer dynamiquement le menu contextuel droit après que l'utilisateur dispose d'un droit-cliquez sur le bouton de la souris, mais juste avant le menu est illustré. Est-ce possible?
OriginalL'auteur matori82 | 2013-02-09
Vous devez vous connecter pour publier un commentaire.
Je suis conscient que c'est une vieille question.
Il semble qu'il n'y est une réponse très simple qui résout les OP du problème d'origine dans un MVVM scénario, parce que la classe ContextMenu prend en charge la liaison via la propriété ItemsSource.
Espère que cela aide quelqu'un rencontre ce.
XAML
Dans le ViewModel, vous pouvez modifier le "ItemList" propriété dynamiquement en fonction du courant de l'état de l'application.
voir ceci la réponse.
OriginalL'auteur nepdev
J'ai trouvé la réponse à ma question et c'est ContextMenuOpening Événement.
Essentiellement, j'ai besoin pour gérer cet événement et de faire les réglages du menu selon le courant de l'état de l'application. Plus de détails ici: https://msdn.microsoft.com/en-us/library/Bb613568(v=vs. 100).aspx
Mise à jour de la documentation: msdn.microsoft.com/en-us/library/bb613568.aspx
Juste au cas où le Document est supprimé de nouveau de toute façon, le titre est " Comment faire pour traiter la ContextMenuOpening de l'Événement, de sorte que vous pouvez le rechercher.
OriginalL'auteur matori82
Si vous avez un ensemble prédéfini de menus contextuels que vous souhaitez utiliser en fonction des scénarios, vous pouvez toujours créer vos menus de contexte en tant que ressources.
Et ensuite créer une base de données déclencheurs sur votre
ListBox
pour définir laContextMenu
à utiliser, plutôt que ce que j'ai fait ci-dessous, je voudrais suggérer de liaison de propriétés sur votre modèle d'affichage ou de code derrière pour ce qu'il pourrait devenir très confuse dans le code xaml.La mise en œuvre ici, vérifie si un seul élément est sélectionné et, dans ce cas, les commutateurs à Menu1
Si la sélection des menu contextuel montrer, c'est un problème seulement pour la vue je dirais la manipulation dans le code derrière.
Tandis que si le ViewModel ne avoir un certain intérêt dans le menu pour afficher (n'a pas l'air comme ça mais c'est difficile à dire sans connaître le contexte complet) vous pouvez exposer certaines des propriétés qui vous permettent de décider dans le ViewModel qui
ContextMenu
à montrer. Bien que plutôt que de propriétés Booléennes vous souhaitez probablement créer une classe qui permet de s'assurer que seul le Booléen est vrai à un moment donné.OriginalL'auteur Peter MacNaughton