UPDATE
OK. После игры с пользовательскими элементами управления у меня есть что-то, что работает лучше, чем раньше. Все меню теперь остаются открытыми.
Что я сделал:
- создал пользовательский элемент управления с именем QuadContextMenu, полученный из ContextMenu, переопределив ключ стиля по умолчанию.
- стиль элемента управления имеет 4 всплывающих примитива:
- каждый с именем PART_, поэтому я получаю ссылку на них при OnApplyTemplate.
- у каждого есть дочерний QuadMenu, который является пользовательским элементом управления, полученным из MenuBase.
- у каждого есть свои свойства VerticleOffset и HorizontalOffset, привязываемые к ActualHeight и ActualWidth дочернего элемента [2].
Стиль QuadMenu / Шаблон управления:
- имеет классическую рамку с док-панелью и рамку с текстовым блоком для ввода названия меню.
[2] Как расположить меню в Quad:
- TopLeft смещен минус фактическая ширина и высота
- TopRight смещено минус фактическая высота
- BottomLeft смещен минус фактическая высота
- BottomRight имеет смещение NOT и находится в своем исходном местоположении
НОВЫЕ ВОПРОСЫ / ПРОБЛЕМЫ
Это следующие задачи для создания этого элемента управления:
1. в данный момент клавиатура и мышь заблокированы / захвачены первым меню, на которое вы фокусируете, а остальные недоступны при наведении на них курсора. Это означает, что вы можете использовать только 1 из меню.
2. переверните MenuItem, чтобы для TopLeft / BottomLeft подменю открылось с левой стороны.
Я уже пытался заменить пункт меню, переопределив методы GetContainerForItemOverride, чтобы вернуть QuadMenuItem. QuadMenuItem - это пользовательский элемент управления, производный от MenuItem. Однако, когда я делаю это, я теряю функциональность подменю, что разочаровывает.
Если у кого-нибудь есть какие-либо советы / хитрости / предложения о том, как решать эти проблемы, он был бы очень признателен! : D Спасибо