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

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

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

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

1 Ответ

1 голос
/ 17 июня 2009

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

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

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

...