Я застрял в этом некоторое время.
Я хочу динамическое меню для моего приложения MVVM.В моей модели представления у меня есть свойство с именем Menu
:
Menu : List<IAction>
, где IAction
определяется как:
public interface IAction
{
string Name { get; set; }
ImageSource Icon { get; set; }
ICommand Command { get; set; }
List<IAction> ChildActions { get; set;}
}
Я заполняю свое меню следующим образом:
<ToolBar>
<Menu ItemsSource="{Binding Menu}">
<Menu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding Icon}" />
</Setter.Value>
</Setter>
<Setter Property="ItemsSource" Value="{Binding ChildActions}" />
</Style>
</Menu.ItemContainerStyle>
</Menu>
</ToolBar>
Приведенный выше код правильно заполняет иерархию, например:
File
-> Item1
-> Item1
-> Submenu
-> SubItem1
-> SubItem2
Моя проблема:
Моя проблема в том, что стиль меню отличается от того, когдаЯ определяю статические меню.Похоже, что стиль сбрасывается на серый стиль, похожий на Windows XP, а не на стиль по умолчанию с белым фоном и серым столбцом изображения.
Другая проблема заключается в том, что Item1 и Item2 (то есть элементы напервый уровень) расписан без значков.Subitem1 и Subitem2 имеют значки.
Мой вопрос:
Как заполнить меню с привязкой к данным таким образом, чтобы значки отображались правильно и стиль по умолчаниюостаются нетронутыми?
Спасибо за отзыв!