我正在使用 MahApps Metro UI 工具包编写 WPF 应用程序。
http://mahapps.com/guides/quick-start.html http://mahapps.com/guides/quick-start.html
从他们网站上的指南来看,我基本上已经完成了我的申请,而且看起来很顺利。我遇到的唯一问题是我无法找到如何使用他们提供的图标包作为上下文菜单图标。
这是我正在尝试做的事情的直观示例。虽然我能够获取原始的“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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)