如何从菜单项完全自定义弹出窗口

本文关键字:自定义 窗口 菜单项 | 更新日期: 2023-09-27 18:08:00

我在 XAML 中有正常的菜单。我想完全更改单击菜单项时显示的弹出窗口的外观。

我正在寻找这样的东西:

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

如何从菜单项完全自定义弹出窗口

您需要覆盖MenuItem的模板,因为弹出窗口是其中的一部分,请查看默认模板以了解模板的外观。 MenuItem有一个TemplatePartAttribute所述弹出窗口。

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

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

上下文菜单样式覆盖:

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