J'ai le TabControl sur lequel je définis le ContextMenu.La façon correcte de trouver le TabItem à partir de la commande ContextMenu
Tous les éléments ContextMenu ont des commandes définies. Toutes les commandes sont routées et les commandes CommandBindings sont définies à plusieurs niveaux au-dessus du contrôle TabControl.
Donc la question est: dans les gestionnaires d'événements CommandExtraction CanExecute/Execute, quelle est la bonne façon de savoir sur quel TabItem le menu a été appelé? Par correct je veux dire celui qui ne serait pas cassé si je change quelque chose comme le modèle TabItem.
Ou peut-être l'approche globale est erronée et je ne devrais pas utiliser de commandes routées pour cela? J'ai initialement utilisé le routage pour la commande Ajouter un nouvel onglet qui nécessite des raccourcis clavier.
Merci d'avance.
MISE À JOUR:
solution d'Igor est plus propre de POV architecturale (sauf que je supprimerais _ dans ViewModel), mais je veux avoir une commande Fermer réutilisable qui est indépendante de ce que TabControl est lié à (depuis Fermer/Fermer Tout pour les onglets existent dans toutes sortes d'applications et ne sont pas sémantiquement liés à un modèle spécifique).
En outre, je ne peux pas utiliser DataTemplate personnalisé car j'ai déjà un modèle personnalisé, et le sous-classement rendrait la solution un peu trop compliquée.
Merci, voir ma réponse à la fin de la question d'origine. Encore, +1. –