如何从MenuItem完全自定义弹出窗口?

时间:2011-09-09 12:39:01

标签: c# wpf xaml

我在XAML中有正常的菜单。我想彻底改变当你点击菜单项时显示的弹出窗口的外观。

我正在寻找类似的东西:

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

2 个答案:

答案 0 :(得分:2)

您需要覆盖MenuItem的模板,因为Popup是其中的一部分,请查看default templates以了解模板应该是什么样子。 MenuItem有弹出窗口TemplatePartAttribute

答案 1 :(得分:1)

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

MenuItem的样式覆盖示例:

<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

ContextMenu样式覆盖:

<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">