N.B. ЭТОТ ВОПРОС БЫЛ ОБНОВЛЕН, ПРОЧИТАЙТЕ ДАЛЬШЕ
Hi,
Я хочу создать настраиваемое контекстное меню с 4 подменю, каждое в своем собственном квадранте (вверху слева, вверху справа, внизу слева, внизу справа). Похож на 3ds Studio Max.
Вот как я подошел к этой проблеме до сих пор: - создать настраиваемый элемент управления WPF, производный от ContextMenu [1]
- объявить 4 свойства зависимостей ContextMenu, они будут отображаться в меню и могут быть установлены из XAML.
- AddOwner в ContextMenu.IsOpenProperty, добавление уведомления об изменении свойства.
- при изменении свойства IsOpen установите свойство IsOpen для 4 дочерних контекстных меню.
- с помощью ContextMenuService установите вертикальное и горизонтальное смещения контекстных меню чтобы они появлялись в каждом квадранте; привязка фактических свойств высоты и ширины для расчета смещений.
[1] Необходимо получить из контекстного меню, иначе вы не сможете назначить его свойству ContextMenu в окне.
Это похоже работает, есть проблемы с тем, что меню НЕ остаются открытыми (они закрываются, поскольку фокус находится вне меню), но я уверен, что использую Reflector. NET найти способ обойти это.
Это мой первый пользовательский элемент управления WPF, который я пытался написать; и не уверен, что это лучший подход.
Любые предложения / идеи о том, как создать это четырехъядерное контекстное меню?