Come faccio a condividere una definizione di menu tra un menu di scelta rapida e un menu normale in WPF

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

  •  02-07-2019
  •  | 
  •  

Domanda

Ho un MenuItem definito che vorrei condividere tra due diversi menu su una pagina. Il menu contiene funzionalità che è la stessa tra entrambi i menu e non ne voglio due copie. Esiste un modo per definire un MenuItem nella pagina. Risorse e fare riferimento in XML ContextMenu di seguito?

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

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

    <!-- include shared menu here -->

</ContextMenu>
È stato utile?

Soluzione

L'ho fatto impostando x: Shared = " False " sulla voce di menu stessa. Le risorse sono condivise tra ogni luogo che le utilizza per impostazione predefinita (ovvero un'istanza per tutti gli usi), quindi disattivarlo significa che un nuovo "copia" della risorsa viene creata ogni volta.

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

Riceverai comunque una copia di " copia " di esso, ma devi solo definirlo in un posto. Vedi se questo aiuta. Lo usi in questo modo nella definizione del tuo menu:

<StaticResource ResourceKey="myMenuItem" />

Altri suggerimenti

Perché vuoi mescolare e abbinare ... Vorrei fare un controllo personalizzato che eredita da ContextMenu che ha un " SharedMenuItems " Proprietà di dipendenza e una proprietà di dipendenza MenuItems. In questo modo il tuo controllo può decidere come unire questi due set insieme. Se desideri un esempio di questo, per favore fatemelo sapere.

Diverse opzioni: a) Associare il menu contestuale o il menu alla stessa raccolta sottostante e utilizzare modelli di elementi e altri per il lavoro b) Utilizzare i comandi e databind a un insieme di associazioni di comandi

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top