完全自定义上下文菜单

时间:2012-12-07 13:22:08

标签: c# wpf contextmenu

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

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

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

Top: The custom context menu inheriting from ItemsControl. Bottom: The same context menu inheriting from 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>

The context menu when overriding the default style.

2 个答案:

答案 0 :(得分:2)

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

以下是ContextMenu的默认值:http://msdn.microsoft.com/en-us/library/ms744758.aspx

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

答案 1 :(得分:0)

我个人不知道如何覆盖或更改默认的contextmenu布局。 如果看起来没有正确的方法,我认为你应该使用Adorner类从sratch创建它,否则通过创建一个新的透明tomost窗口。 让我们了解您将选择的解决方案。

此致