gpt4 book ai didi

c# - 将 MahApps 图标与 ContextMenu 结合使用

转载 作者:行者123 更新时间:2023-12-02 02:26:22 25 4
gpt4 key购买 nike

我正在使用 MahApps Metro UI 工具包编写 WPF 应用程序。

http://mahapps.com/guides/quick-start.html

从他们网站上的指南来看,我基本上已经完成了我的申请,看起来很顺利。我遇到的唯一问题是我无法找到如何使用他们提供的图标包作为上下文菜单图标。

enter image description here

这是我正在尝试做的事情的直观示例。虽然我能够获取原始的“Windows”菜单项来显示其图标,但我无法对上下文菜单菜单项执行相同的操作。我做错了什么或者有办法解决这个问题吗?

这是我的 .xaml:

<Menu IsMainMenu="True">
<MenuItem Header="_Windows" ContextMenuService.IsEnabled="False" Click="WindowsMenuItem_Click">
<MenuItem.Icon>
<Rectangle Width="15" Height="15" Fill="{Binding RelativeSource={RelativeSource AncestorType=MenuItem}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_window}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
<MenuItem.ContextMenu>
<ContextMenu>
<MenuItem Header="_Welcome Module">
<MenuItem.Icon>
<Rectangle Width="15" Height="15" Fill="{Binding RelativeSource={RelativeSource AncestorType=MenuItem}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_home}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Schedule Module">
<MenuItem.Icon>
<Rectangle Width="15" Height="15" Fill="{Binding RelativeSource={RelativeSource AncestorType=MenuItem}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_calendar}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Performance Module">
<MenuItem.Icon>
<Rectangle Width="15" Height="15" Fill="{Binding RelativeSource={RelativeSource AncestorType=MenuItem}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_table}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="_Audit Module">
<MenuItem.Icon>
<Rectangle Width="15" Height="15" Fill="{Binding RelativeSource={RelativeSource AncestorType=MenuItem}, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_graph_line}" />
</Rectangle.OpacityMask>
</Rectangle>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</MenuItem.ContextMenu>
</MenuItem>
</Menu>

还有我的 .xaml.cs:

public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}

private void WindowsMenuItem_Click(object sender, RoutedEventArgs e)
{
(sender as MenuItem).ContextMenu.IsEnabled = true;
(sender as MenuItem).ContextMenu.PlacementTarget = (sender as MenuItem);
(sender as MenuItem).ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;
(sender as MenuItem).ContextMenu.IsOpen = true;
}
}

最佳答案

我使用以下方法让它在我的应用程序中工作:

<Window.Resources>
<ResourceDictionary>
<VisualBrush x:Key="RunAllTestsIcon" Visual="{StaticResource appbar_list_check}"/>
</ResourceDictionary>
</Window.Resources>
...
<ContextMenu StaysOpen="True">
<MenuItem Header="RunAllTests">
<MenuItem.Icon>
<Rectangle Width="22" Height="22" Fill="{StaticResource RunAllTestsIcon}"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>

关于c# - 将 MahApps 图标与 ContextMenu 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com