我正在使用MahApps Metro UI工具包编写WPF应用程序。
http://mahapps.com/guides/quick-start.html
从他们网站上的指南来看,我基本上已经完成了我的申请,看起来很光滑。唯一的问题,我有是我还没有能够找出如何使用图标包,他们提供的上下文菜单图标。
这里有一个我正在尝试的视觉例子。虽然我能够让原来的“Windows”菜单项显示它的图标,但我无法为contextmenu menuitems做同样的事情。是我做错了什么,还是有办法解决这个问题?
下面是我的.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;
}
}
3条答案
按热度按时间ukqbszuj1#
我让它在我的应用程序中工作,使用:
wlwcrazw2#
我得到了它的工作,直接使用矢量图标,而不必嵌入图像或更改资源文件。
矢量图标来自materialdesignicons.com。您可以选择一个图标并直接从那里获取XAML的
Path
。xlpyo6sf3#
使用最新的MahApps IconPacks,您可以简单地执行以下操作: