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

Add MahApps.Metro Context Menu programmatically

因为我正在将动态内容加载到 StackPanel 我想在每个对象上添加一个 ContextMenu

现在我正在用 System.Windows.Controls.ContextMenu 做它并且它正在工作。

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

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

你有什么想法吗?

感谢您的帮助:)

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

因此,您只需在 CodeBehind 中创建普通的上下文菜单即可。您可以将以下 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!)。