Como posso partilhar uma definição de menu entre um menu de contexto e um menu regular no WPF

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu tenho um MenuItem definido que eu gostaria de compartilhar entre dois menus diferentes em uma única página. O menu contém functionallity que é o mesmo entre os dois menus e eu não quero que duas cópias do mesmo. Existe uma maneira de definir um MenuItem nas Page.Resources e referenciá-lo na ContextMenu XAML abaixo?

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

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

    <!-- include shared menu here -->

</ContextMenu>
Foi útil?

Solução

Eu fiz isso definindo x: Shared = "false" no item de menu em si. Os recursos são compartilhados entre cada lugar que os utiliza por padrão (ou seja, uma instância em todos os usos), então transformar esse off significa que um novo "cópia" do recurso é feito de cada vez.

Assim:

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

Você ainda vai ter uma "cópia" do mesmo, mas você só precisa de defini-lo em um lugar. Ver se isso ajuda. Você usá-lo como este dentro de sua definição de menu:

<StaticResource ResourceKey="myMenuItem" />

Outras dicas

Porque você quer misturar e combinar ... Eu faria um controle personalizado que herda de ContextMenu que tem um "SharedMenuItems" Dependência de propriedade e uma dependência Propriedade MenuItems. Desta forma, o controle pode decidir como mesclar esses dois conjuntos juntos. Se você gostaria de um exemplo disso, por favor me avise.

Um número de opções: a) vincular o ContextMenu ou Menu para o mesmo subjacente item de coleta e uso de modelos et al para o trabalho b) Use os comandos, e vincular a um conjunto de ligações de comando

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top