2012-12-28 21 views
0

请让我知道如果我在我的代码中做错了什么。我正在尝试将WPF菜单绑定到“MenuViewModel”。该绑定工作,我期望在一个非风格的窗口。WPF菜单绑定丢失风格只在第一级

我使用MahApps.Metro仅用于样式目的,这是绑定后的样子。

This is how it looks http://i45.tinypic.com/2n74but.png

这里的链接到源代码http://sdrv.ms/W5uJpY

视图模型:

public class Menu : INotifyPropertyChanged 
{ 
    public Menu() 
    { 
     IsEnabled = true; 
     Children = new List<Menu>(); 
    } 

    #region [ Menu Properties ] 

    private bool _isEnabled; 
    private string _menuText; 
    private ICommand _command; 
    private IList<Menu> _children; 

    public string MenuText 
    { 
     get { return _menuText; } 
     set 
     { 
      _menuText = value; 
      RaisePropertyChanged("MenuText"); 
     } 
    } 

    public bool IsEnabled 
    { 
     get { return _isEnabled; } 
     set 
     { 
      _isEnabled = value; 
      RaisePropertyChanged("IsEnabled"); 
     } 
    } 

    public ICommand Command 
    { 
     get { return _command; } 
     set 
     { 
      _command = value; 
      RaisePropertyChanged("Command"); 
     } 
    } 

    public IList<Menu> Children 
    { 
     get { return _children; } 
     set 
     { 
      _children = value; 
     } 
    } 

    #endregion 

    #region [INotifyPropertyChanged] 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void RaisePropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
    #endregion 
} 

XAML:

<Menu Grid.Row ="0" IsMainMenu="True" x:Name="mainMenu" VerticalAlignment="Top" ItemsSource="{Binding Children}"> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}"> 
     <!--Or can be the line below, both yield the same result--> 
     <!--<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource MetroMenuItem}">--> 
     <!--NOTICE THAT SUB MENU's of OPEN work fine--> 
      <Setter Property="Header" Value="{Binding Path=MenuText}"/> 
      <Setter Property="Command" Value="{Binding Path=Command}"/> 
      <Setter Property="ItemsSource" Value="{Binding Path=Children}"/> 
     </Style> 
    </Menu.ItemContainerStyle> 
</Menu> 

回答