以编程方式添加 MahApps.Metro 上下文菜单

Posted

技术标签:

【中文标题】以编程方式添加 MahApps.Metro 上下文菜单【英文标题】:Add MahApps.Metro Context Menu programmatically 【发布时间】:2016-10-16 21:45:17 【问题描述】:

由于我正在将动态内容加载到 StackPanel 中,因此我想在每个对象上添加一个 ContextMenu

现在我正在使用 System.Windows.Controls.ContextMenu 进行操作,并且它正在工作。

不幸的是,菜单看起来像旧的窗口形式,而不像 MahApps 的漂亮菜单。

在 Internet 页面上,我可以找到如何在 xaml 中添加菜单的文档,而不是如何通过代码创建菜单。

你有什么想法吗?

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

MahApps.Metro中查找我发现ContextMenu的Style有Key MetroContextMenu

因此,您只需在 CodeBehind 中创建您的普通 ContextMenu。您可以将以下Style 添加到您的App.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!--  MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive!  -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.ContextMenu.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <!--  Accent and AppTheme setting  -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Green.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    <!-- Apply MetroStyle for ContextMenu to ContextMenus in Application scope -->
    <Style TargetType="ContextMenu" BasedOn="StaticResource MetroContextMenu" />
</Application.Resources>

这只是您必须向您的ContextMenu 申请。 MahApps没有提供特殊的ContextMenu控件(只有Style!)。

【讨论】:

以上是关于以编程方式添加 MahApps.Metro 上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

一个Metro风格的开源项目 MahApps.Metro

wpf使用mahapps.metro后为啥窗体没有了阴影

wpf开源控件MahApps.Metro

wpf开源控件MahApps.Metro

WPF_MahApps.Metro界面主题使用

WPF_MahApps.Metro界面主题使用