3

我正在尝试为具有径向样式(每个项目的“饼片”)的触摸应用程序创建一个完全自定义的上下文菜单。我已经能够从 ItemsControl 的基础创建一个。但是,当我尝试将其切换到 ContextMenu 的基础时,我无法摆脱项目列表中每个饼图切片的默认弹出窗口。

有没有办法覆盖默认的 ContextMenu 样式来摆脱这个项目列表功能?

编辑:这是我的问题的屏幕截图。两个示例之间的代码几乎完全相同,除了继承自哪个类以及它如何显示(作为子项添加到 Canvas 与显示弹出窗口)

顶部:继承自 ItemsControl 的自定义上下文菜单。 底部:从 ContextMenu 继承的相同上下文菜单

编辑2:我尝试覆盖默认样式,如下所示:

<ContextMenu.Style>
  <Style TargetType="ContextMenu">
    <Setter Property="OverridesDefaultStyle" Value="true" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ContextMenu">
          <Canvas IsItemsHost="true" Height="100" Width="100" />
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ContextMenu.Style>

覆盖默认样式时的上下文菜单。

4

2 回答 2

2

如果您只想更改 WPF 控件的外观,只需更改其控件模板即可。

这是 ContextMenu 的默认设置:http: //msdn.microsoft.com/en-us/library/ms744758.aspx

并且不要忘记更新 MenuItem 控件模板:http: //msdn.microsoft.com/en-us/library/ms747082 (v=vs.85).aspx

于 2012-12-07T14:30:14.657 回答
0

我个人不知道有什么方法可以覆盖或更改默认的上下文菜单布局。如果似乎没有适当的方法,我认为您应该使用 Adorner 类从头开始创建它,否则通过创建一个新的透明 tomost 窗口。让我们了解您将选择的解决方案。

问候

于 2012-12-07T14:23:51.137 回答