Создание пользовательского элемента управления, который представляет собой кнопку, которая также имеет Items и ItemsSource?

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

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать элемент управления SplitButton , который использует ContextMenu для отображения своих элементов. SplitButton в настоящее время является производным от Button . У меня есть PART_DropDownInitiator - маленький значок, по которому пользователь нажимает, чтобы вызвать ContextMenu для SplitButton , чтобы показать его элементы.

Проблема в том, что я пытаюсь настроить ContextMenu по умолчанию внутри шаблона SplitButton или стиля, таким образом Пользователь элемента управления не должен делать это самостоятельно. Сначала я решил, что пользователь просто установит свойство SplitButton.ContextMenu.Items в xaml, но это не представляется возможным. Теперь я хотел бы добавить свойства Items и ItemsSource в SplitButton , которые ContextMenu внутри может быть привязан к нему. И пользователь должен просто установить свойство Items или ItemsSource в xaml или code-behind в SplitButton ...

Но как свойства Items , так и ItemsSource происходят из ItemsControl , что является проблемой, поскольку SplitButton уже является производным от Кнопка . Так что я не уверен, что делать ... Есть идеи?

Это было полезно?

Решение

Если вы идете по пути наследования, вы должны вместо этого наследовать от HeaderedItemsControl, где ваш ControlTemplate по умолчанию помещает содержимое заголовка в качестве содержимого кнопки.

В результате вы также получаете Items / ItemsSource - единственное, что вам нужно разработать, это ваш ControlTemplate.

Наконец, рассмотрите возможность реализации части меню как всплывающее окно вместо ContextMenu. ContextMenu - это специализированный элемент пользовательского интерфейса (который обычно вызывается щелчком правой кнопки мыши). Для получения дополнительной информации см. ControlTemplate по умолчанию ComboBox в aero.normalcolor.xaml.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top