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

发布于 2024-12-03 21:38:33 字数 386 浏览 2 评论 0原文

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

我正在寻找这样的东西:

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

I have normal menu in XAML. And I would like to completely change looks of the popup that gets displayed when you click on menu item.

I'm looking for something like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

箜明 2024-12-10 21:38:33

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

You need to override the template of the MenuItem since the Popup is a part of it, have a look at the default templates to get an idea of what a template should look like. MenuItem has a TemplatePartAttribute for said popup.

如日中天 2024-12-10 21:38:33

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

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

Define following styles in resources of your application:

An example of style overriding for 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 styles overriding:

<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">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文