NB Этот вопрос был обновлен, ЧИТАЙТЕ ДАЛЕЕ ВНИЗWPF Quad контекстное меню
Привет,
Я хочу, чтобы создать пользовательский контекстное меню, которое имеет 4 подменю, каждый в своем собственном квадранте (верхний левый, верхний правый, внизу слева, внизу справа). Подобно 3ds Studio Max.
Это, как я подошел к вопросу до сих пор: - создать пользовательский элемент управления WPF, проистекает из ContextMenu [1]
- объявить 4 свойства зависимости от ContextMenu, это будет меню отображается и может быть установлено из XAML.
- AddOwner to ContextMenu.IsOpenProperty, добавив уведомление об изменении свойства.
- когда изменения свойства IsOpen устанавливают свойство IsOpen из 4 дочерних контекстных меню.
- с помощью ContextMenuService установите вертикальные и горизонтальные смещения контекстных меню, чтобы они отображались в каждом квадранте; привязывая фактические свойства высоты и ширины для вычисления смещений.
[1] Нужно извлекать из контекстного меню, иначе вы не можете присвоить его свойству ContextMenu в окне.
Это появляется работать, есть проблемы с меню НЕ остается открытой (они закрываются, как в центре внимания находится вне меню), но я уверен, что с помощью Reflector.NET найти способ обойти это ,
Это мой первый пользовательский элемент управления WPF, который я пытался написать; и не уверен, что это лучший подход.
Любые предложения/идеи о том, как создать это четырехугольное контекстное меню?
Эй, Стивен, спасибо, что ответили, это заставило меня думать об этом по-другому. Я обновил сообщение с моей последней попыткой, которая работает, за исключением нескольких новых проблем. :) – Dennis
Любое изменение настроек по умолчанию по умолчанию всегда болезненно. Я думаю, вам будет лучше вообще, если вы не используете ContextMenu для этого и просто поедете со своими окнами. Я действительно сделал бы это поведение (http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx) – Steven
Это очень больно, переопределяя поведение по умолчанию элемента управления с помощью некоторого hackey ™ через отражение для изменения внутренних/частной собственности. Я буду экспериментировать, чтобы увидеть, могу ли я создать тот же элемент управления, используя приложенное поведение, после этого отправлю сообщение, если у меня будет какой-то успех. Спасибо, Стив! – Dennis