Wie kann ich eine Menüdefinition zwischen einem Kontextmenü teilen und einer regelmäßigen Menü in WPF

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

  •  02-07-2019
  •  | 
  •  

Frage

Ich habe eine definierte MenuItem, Ich mag würde zwischen zwei verschiedenen Menüs auf einer Seite teilen. Das Menü enthält functionallity, die gleich zwischen den beiden Menüs ist und ich will nicht zwei Kopien davon. Gibt es trotzdem eine MenuItem in dem Page.Resources zu definieren, und es in der ContextMenu XAML unten verweisen?

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

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

    <!-- include shared menu here -->

</ContextMenu>
War es hilfreich?

Lösung

Ich habe dies durch das Setzen x getan: Geteilt = „False“ auf dem Menüpunkt selbst. Die Ressourcen werden zwischen jedem Ort geteilt, die sie standardmäßig verwendet (eine Instanz für alle Anwendungen bedeuten), so dass Ausschalten bedeutet, dass eine neue „Kopie“ der Ressource jedes Mal durchgeführt wird.

So:

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

Sie werden nach wie vor eine „Kopie“ davon bekommen, aber Sie müssen es nur an einem Ort zu definieren. Prüfen Sie, ob das hilft. Sie verwenden es, wie dies in Ihrer Menüdefinition:

<StaticResource ResourceKey="myMenuItem" />

Andere Tipps

Weil Sie Mix-and-Match wollen ... Ich würde eine benutzerdefinierte Kontrolle machen, die von ContextMenu erbt, dass ein "SharedMenuItems" Dependancy Eigentum hat und eine MenuItems Dependancy Property. Auf diese Weise Ihre Steuerung kann entscheiden, wie diese beiden Sätze zusammen zu fusionieren. Wenn Sie ein Beispiel dafür haben mögen, lassen Sie es mich wissen.

Eine Reihe von Optionen: a) Databind die ContextMenu oder das Menü auf die gleiche Basis Sammlung und Verwendung Elementvorlagen et al auf die Arbeit b) Verwenden Befehle und databind auf einen Satz von Befehlsbindungen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top