创建一个自定义控件,它是一个也有Items和ItemsSource的Button?

时间:2009-06-17 15:53:28

标签: c# wpf button itemssource

我正在尝试创建一个SplitButton控件,该控件使用ContextMenu来显示其项目。 SplitButton目前来自Button。我有PART_DropDownInitiator这是用户点击的小图标,用于显示ContextMenu SplitButton以显示其项目。

问题在于我正在尝试在ContextMenu的{​​{1}}或样式中设置默认SplitButton,这样控件的用户就不必自己动手吧。起初我想我只是让用户在xaml中设置Template属性,但这似乎不可能。现在,我想向SplitButton.ContextMenu.Items添加ItemsItemsSource属性,SplitButton模板中的ContextMenu可以绑定到它。用户不仅需要在xaml中设置SplitButtonItems属性,还需要在ItemsSource上设置代码隐藏...

但是,SplitButtonItems属性似乎都来自ItemsSource,这是一个问题,因为ItemsControl已经从SplitButton派生。所以我不知道该怎么做......有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果你要继承路由,你应该从HeaderedItemsControl派生,你的默认ControlTemplate将Header内容作为Button的内容。

因此,您还可以获得Items / ItemsSource - 您唯一需要开发的是ControlTemplate。

最后,考虑将菜单部分实现为Popup而不是ContextMenu。 ContextMenu是一个特定于目的的UI元素(通常用右键单击)。有关更多信息,请参阅aero.normalcolor.xaml中的ComboBox的默认ControlTemplate。