创建一个自定义控件,它是一个也有Items和ItemsSource的Button?
-
06-07-2019 - |
题
我正在尝试创建一个 SplitButton
控件,该控件使用 ContextMenu
来显示其项目。 SplitButton
当前来自 Button
。我有一个 PART_DropDownInitiator
,它是用户点击的小图标,用于显示 SplitButton
的 ContextMenu
以显示其项目。
问题是我正在尝试在 SplitButton
的 Template
或样式中设置默认的 ContextMenu
,这样一来控件的用户不必自己动手。起初我想我只是让用户在xaml中设置 SplitButton.ContextMenu.Items
属性,但这似乎不可能。现在我想将 Items
和 ItemsSource
属性添加到 SplitButton
中 ContextMenu
> SplitButton 的模板可以绑定到它。用户不仅需要在xaml中设置 Items
或 ItemsSource
属性,或者在 SplitButton
中设置代码隐藏......
但是, Items
和 ItemsSource
属性似乎都来自 ItemsControl
,这是一个问题,因为 SplitButton
已经从 Button
派生。所以我不知道该怎么做......有什么想法吗?
解决方案
如果你要继承路由,你应该从HeaderedItemsControl派生,你的默认ControlTemplate将Header内容作为Button的内容。
因此,您还可以获得Items / ItemsSource - 您唯一需要开发的是ControlTemplate。
最后,考虑将菜单部分实现为Popup而不是ContextMenu。 ContextMenu是一个特定于目的的UI元素(通常用右键单击)。有关更多信息,请参阅aero.normalcolor.xaml中的ComboBox的默认ControlTemplate。