2011-09-09 36 views
2

我在XAML中有正常的菜单。我想彻底改变当你点击菜单项时显示的弹出窗口的外观。如何从MenuItem完全自定义弹出菜单?

我正在寻找这样的事情:

<Menu> 
    <MenuItem Header="MyCustomMenu"> 
     <MenuItem.PopupTemplate> 
      <ControlTemplate> 
       <Image Source="SexyImage"/> 
      </ControlTemplate> 
     </MenuItem.PopupTemplate> 
    </MenuItem> 
</Menu> 
+0

Popup是您的自定义控件吗?我不明白这个问题。或者你的意思是ContextMenu控制为弹出? – sll

+0

这是一个例子。弹出我的意思是当你点击菜单时文本弹出的上下文菜单。不过,我不希望它成为ContextMenu,我希望能够将任何东西放在那里。让我们说一个图像。 – Kugel

回答

1

定义在应用程序的资源以下样式:

的菜单项风格压倒一切的例子:

<Style TargetType="MenuItem"> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Foreground" Value="Black"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="MenuItem"> 
         .... here is your custom template 

文本菜单样式压倒一切:

<Style TargetType="ContextMenu"> 
      <Setter Property="SnapsToDevicePixels" Value="True"/> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Grid.IsSharedSizeScope" Value="true"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ContextMenu"> 
+0

好吧,这是一个自定义ContextMenu及其中的项目的好方法。感谢代码。这很有帮助。但这不完全是我所追求的。 – Kugel

+0

@Kugel:你有没有找到适合你的任务的解决方案? – sll

+0

我认为是H.B. suggenstion将起作用。我试试看。我稍后会发布结果。 – Kugel