WPF - Comment puis-je créer un menu et sous-menus à l'aide de la liaison
Je suis en train de créer un menu dynamique à l'aide de la liaison. J'ai mon viewmodel j'ai une liste d'objets qui contient un en-tête et une commande. Cependant, il n'est pas de travail. Je pense que le problème est dans le modèle de données. Voir mon code ci-dessous:
<Menu Background="{x:Null}" Grid.Row="0" Grid.Column="1" Panel.ZIndex="2" Width="865" Height="85" HorizontalAlignment="Left" ItemsSource="{Binding Path=MenuItems}">
<Menu.ItemTemplate>
<HierarchicalDataTemplate DataType="MenuItemViewModel" ItemsSource="{Binding Path=MenuItems}">
<MenuItem Header="{Binding Header}" Style="{DynamicResource MenuItemStyle1}" ItemsSource="{Binding Path=MenuItems}" Padding="10,12,10,0" Height="44.1" Margin="30,0,0,0" FontWeight="Bold">
<MenuItem.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</MenuItem.ItemsPanel>
</MenuItem>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Header}" Style="{DynamicResource MenuItemStyle1}" Padding="0,8,0,0" Height="38">
</MenuItem>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</Menu.ItemTemplate>
</Menu>
Le résultat ne montre que le premier menu. Les sous-menus ne sont pas affichés, mais ils sont là depuis les menus qui ont des enfants, la flèche est de l'impression après le menu d'en-tête.
Pourrait-on trouver quelque chose de mal sur la liaison? Ou une suggestion?
Juste pour information, MenuItems est une liste de MenuItemViewModel objets qui possède un en-tête et une liste de MenuItemViewModel objets (sous-menus) appelé MenuItems trop.
OriginalL'auteur Jannibelli | 2014-05-29
Vous devez vous connecter pour publier un commentaire.
Pour moi, il a travaillé avec ce modèle simple:
Ici est l'exemple complet:
MainWindow.xaml:
MainWindow.xaml.cs:
La fenêtre ressemble à ceci:
Oui, c'est possible. Veuillez voir ma mise à jour de l'exemple ci-dessus. Lorsque vous cliquez sur un élément de menu, une boîte de message avec le menu de l'élément de texte d'en-tête s'affiche.
Je vous remercie beaucoup pour votre soutien. C'est le travail!!!
Je ne peux pas ajouter
Separator
((OriginalL'auteur
qui est très facile,vous pouvez utiliser ce code pour votre imbriquée menu
ViewModel: TopMenuViewModel.cs
Vue: TopMenuView.xaml
OriginalL'auteur pejman