Я пишу приложение WPF, используя набор инструментов UI MahApps Metro UI.Использование значков MahApps с ContextMenu
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;
}
}