Comment partager une définition de menu entre un menu contextuel et un menu standard dans WPF

StackOverflow https://stackoverflow.com/questions/150150

  •  02-07-2019
  •  | 
  •  

Question

J'ai un MenuItem défini que je voudrais partager entre deux menus différents sur une même page. Le menu contient une fonctionnalité identique entre les deux menus et je ne souhaite pas en avoir deux copies. Est-il possible de définir un MenuItem dans la Page.Resources et de le référencer dans le ContextMenu XAML ci-dessous?

<Page.Resources>
    <MenuItem x:Key="123"/>
</Page.Resources>

<ContextMenu>
    <MenuItem>Something hardcoded</MenuItem>

    <!-- include shared menu here -->

</ContextMenu>
Était-ce utile?

La solution

Je l'ai fait en définissant x: Shared = " False " sur l'élément de menu lui-même. Les ressources sont partagées entre chaque emplacement qui les utilise par défaut (c'est-à-dire une instance parmi toutes les utilisations). Par conséquent, si vous désactivez cette option, vous créerez une nouvelle "copie". de la ressource est faite à chaque fois.

Donc:

<MenuItem x:Key="myMenuItem" x:Shared="False" />

Vous obtiendrez toujours une "copie". de celui-ci, mais il vous suffit de le définir à un endroit. Voyez si cela aide. Vous l'utilisez comme ceci dans votre définition de menu:

<StaticResource ResourceKey="myMenuItem" />

Autres conseils

Parce que vous voulez mélanger et faire correspondre ... je créerais un contrôle personnalisé qui hérite de ContextMenu et qui a un "SharedMenuItems". Propriété Dependancy et une propriété MenuItems Dependancy. De cette façon, votre contrôle peut décider comment fusionner ces deux ensembles. Si vous souhaitez un exemple, merci de me le faire savoir.

Un certain nombre d'options: a) Associez le ContextMenu ou le Menu à la même collection sous-jacente et utilisez des modèles d’éléments et autres au travail b) Utiliser des commandes et établir une liaison de données avec un ensemble de liaisons de commandes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top