【问题标题】:Creating a custom control that is a Button that also has a Items and ItemsSource?创建一个自定义控件,它是一个也有 Items 和 ItemsSource 的 Button?
【发布时间】:2009-06-17 15:53:27
【问题描述】:

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

问题是我试图在SplitButtonTemplate 或样式中设置默认的ContextMenu,这样控件的用户就不必自己做。起初我想我只是让用户在 xaml 中设置 SplitButton.ContextMenu.Items 属性,但这似乎是不可能的。现在我想在SplitButton 中添加ItemsItemsSource 属性,SplitButton 的模板中的ContextMenu 可以绑定到它。并且用户不应该只需要在 xaml 中设置 ItemsItemsSource 属性或 SplitButton 上的代码隐藏...

但是,ItemsItemsSource 属性似乎都源自ItemsControl,这是一个问题,因为SplitButton 已经源自Button。所以我不确定该怎么做...有什么想法吗?

【问题讨论】:

    标签: c# wpf button itemssource


    【解决方案1】:

    如果您采用继承路线,则应改为从 HeaderedItemsControl 派生,您的默认 ControlTemplate 将 Header 内容作为 Button 的内容。

    因此,您还获得了 Items/ItemsSource —— 您唯一需要开发的就是您的 ControlTemplate。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2017-12-22
      相关资源
      最近更新 更多