2012-07-16 62 views
0

我開發一個WPF項目,以下多個類型的對象是菜單的我的數據模型代碼數據綁定到菜單

class NavigationMenu 
    { 
     public abstract class MenuBase 
     { 
      public MenuBase() 
      { 
      } 

      public MenuBase(string title) 
      { 
       MenuTitle = title; 
      } 

      public Guid MenuId { get; set; } 
      public string MenuTitle { get; set; } 
      public string ImageResourceName { get; set; } 
     } 

     public class MenuItem : MenuBase 
     { 
      public MenuItem() 
      { 

      } 

      public MenuItem(string title) 
       : base(title) 
      { 

      } 

      public string View { get; set; } 
     } 

     public class MenuCategory : MenuBase 
     { 
      public MenuCategory() 
      { 
       MenuItems = new ObservableCollection<MenuItem>(); 
      } 

      public MenuCategory(string title) 
       : base(title) 
      { 
       MenuItems = new ObservableCollection<MenuItem>(); 
      } 

      public MenuCategory(string CategoryTitle, ObservableCollection<MenuItem> pMenuItems) 
       : base(CategoryTitle) 
      { 
       this.MenuItems = pMenuItems; 
      } 

      public ObservableCollection<MenuItem> MenuItems { get; set; } 
     } 

     public class MainMenuItem : MenuBase 
     { 
      public MainMenuItem() 
      { 
       MenuCategories = new ObservableCollection<MenuCategory>(); 
      } 

      public MainMenuItem(string title) 
       : base(title) 
      { 
       MenuCategories = new ObservableCollection<MenuCategory>(); 
      } 
      public ObservableCollection<MenuCategory> MenuCategories { get; set; } 
     } 
    } 

RadMenu的XAML如下所示,

<ui:RadMenu Name="radMenu1" ItemsSource="{Binding MenuBar}" Height="76"> 

     <ui:RadMenu.ItemTemplate> 

      <HierarchicalDataTemplate ItemsSource="{Binding Path=MenuCategories}"> 
       <StackPanel Height="Auto"> 
        <Image MaxWidth="32" MaxHeight="32" Source="{Binding Path=ImageResourceName}" /> 
        <TextBlock HorizontalAlignment="Center"> 
         <TextBlock.Text> 
          <MultiBinding Converter="{StaticResource myConv}"> 
           <Binding Path="MenuId"></Binding> 
           <Binding Path="MenuTitle"></Binding> 
          </MultiBinding> 
         </TextBlock.Text> 
        </TextBlock> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
     </ui:RadMenu.ItemTemplate> 
     </ui:RadMenu> 

我得到的問題是,MenuCategories已成功顯示,但內部MenuCategory未顯示。很顯然,我沒有綁定MenuItems但是MenuCategories。但我不知道如何綁定MenuItems以及在上面DataTemplate?任何想法?

回答

0

綁定你的模型類一個DataTemplate

<HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuCategory }" ItemsSource="{Binding Path=MenuItems }"> 
      <StackPanel Height="Auto"> 
       <Image MaxWidth="32" MaxHeight="32" Source="{Binding Path=ImageResourceName}" /> 
       <TextBlock HorizontalAlignment="Center"> 
        <TextBlock.Text> 
         <MultiBinding Converter="{StaticResource myConv}"> 
          <Binding Path="MenuId"></Binding> 
          <Binding Path="MenuTitle"></Binding> 
         </MultiBinding> 
        </TextBlock.Text> 
       </TextBlock> 
      </StackPanel> 
    </HierarchicalDataTemplate> 


     <HierarchicalDataTemplate DataType="{x:Type NavigationMenu.MenuItem }"> 
      <StackPanel Height="Auto"> 
       //.... 
       <TextBlock HorizontalAlignment="Center" Text="{Binding View}"/> 
       //.... 
      </StackPanel> 
    </HierarchicalDataTemplate> 
+0

現在它沒有顯示任何東西嗎? :( – 2012-07-16 13:29:28