Я пытаюсь реализовать Меню в Окне, используя шаблон MVVM. Поэтому я создал MainWindow и связал его с MainWindowViewModel. MainWindowViewModel содержит MainWindowMenuViewModel, которая является виртуальной машиной, специально разработанной для меню. Это иерархическая структура MenuItemViewModels.
Все кажется простым, но у меня есть проблема - когда я запускаю приложение, меню не отображается должным образом - кажется, свойство Header не установлено. Меню находится в верхнем левом углу, но текст не отображается Я могу нажать на нее, и она открывается, но все элементы меню пустые. Что странно: связанные ICommands работают! Но заголовок не отображается.
Вот мои ресурсы
<Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}" >
<Style.Setters>
<Setter Property="Header" Value="{Binding Path=Title}" />
<Setter Property="Command" Value="{Binding Path=Command}" />
</Style.Setters>
</Style>
<HierarchicalDataTemplate
x:Key="MenuDataTemplate"
DataType="{x:Type vw:MenuItemViewModel}"
ItemsSource="{Binding Path=SubMenuItems}"
ItemContainerStyle="{StaticResource ResourceKey=MenuItemStyle}"
>
</HierarchicalDataTemplate>
MainWindow.xaml содержит меню:
<DockPanel>
<Menu
DockPanel.Dock="Top"
ItemsSource="{Binding Path=Menu.MenuItems}"
ItemTemplate="{StaticResource ResourceKey=MenuDataTemplate}"
/>
</DockPanel>
MenuItemView:
using System.Collections.Generic;
using System.Windows.Input;
namespace WpfMvvmMenu.ViewModel
{
public class MenuItemViewModel
{
public MenuItemViewModel(string title, ICommand command)
{
this.Title = title;
this.Command = command;
this.SubMenuItems = new List<MenuItemViewModel>();
}
public string Title { get; private set; }
public ICommand Command { get; private set; }
public IList<MenuItemViewModel> SubMenuItems { get; private set; }
}
}
Я видел все статьи о MVVM - меню, но все они говорят, что мой DataTemplate в порядке, поэтому должно быть что-то еще.
Спасибо.