Как мне поделиться определением меню между контекстным меню и обычным меню в WPF - PullRequest
2 голосов
/ 29 сентября 2008

У меня есть определенный MenuItem, которым я хотел бы поделиться между двумя различными меню на одной странице. Меню содержит все функции, которые одинаковы для обоих меню, и мне не нужны две его копии. В любом случае можно определить MenuItem в Page.Resources и ссылаться на него в XAML ContextMenu ниже?

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

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

    <!-- include shared menu here -->

</ContextMenu>

Ответы [ 3 ]

4 голосов
/ 30 сентября 2008

Я сделал это, установив x: Shared = "False" в самом пункте меню. Ресурсы распределяются между каждым местом, которое использует их по умолчанию (имеется в виду один экземпляр для всех применений), поэтому отключение этого означает, что каждый раз создается новая «копия» ресурса.

Итак:

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

Вы все равно получите «копию», но вам нужно определить ее только в одном месте. Посмотрите, поможет ли это. Вы используете это в своем определении меню:

<StaticResource ResourceKey="myMenuItem" />
1 голос
/ 29 сентября 2008

Поскольку вы хотите смешивать и сопоставлять ... Я хотел бы создать пользовательский элемент управления, который наследуется от ContextMenu, который имеет свойство зависимости SharedMenuItems и свойство зависимости MenuItems. Таким образом, ваш контроль может решить, как объединить эти два набора. Если вам нужен пример этого, пожалуйста, дайте мне знать.

0 голосов
/ 30 сентября 2008

Количество вариантов: a) Привязать данные ContextMenu или Меню к одной и той же коллекции и использовать шаблоны элементов и др. для работы. б) Использование команд и привязка данных к набору командных привязок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...