Wenn das Kontextmenü in xaml "fest codiert" ist, können Untermenüs einfach hinzugefügt werden. Zum Beispiel:WPF-Untermenü für das Kontextmenü
<ContextMenu>
<MenuItem Header="Comm1" Command="{Binding Blabla1}">
<MenuItem Header="SubComm1" Command="{Binding Blabla2}"></MenuItem>
</MenuItem>
<MenuItem Command="Comm2"></MenuItem>
<MenuItem Command="Comm3"></MenuItem>
</ContextMenu>
Dies bedeutet, dass der ContextMenu drei Elemente hat (Comm1, Comm2 und Comm3) und Comm1 hat Untermenü SubComm1.
Ich habe meine ContextMenu etwas flexibilisiert:
<ContextMenu ItemsSource="{Binding ContextMenuItemsSource}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding ContextMenuCommandHeader}"></Setter>
<Setter Property="Command" Value="{Binding ContextMenuCommand}"></Setter>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
Grundsätzlich ich eine beliebige Anzahl von Elementen in ContextMenu haben kann, und jedes Element kann eine beliebige Kommando hat. Wie kann ich dem ContextMenu-Element ein Untermenü hinzufügen?
Binden Sie Ihre Baumdatenstruktur an ItemsSource und verwenden Sie Converter, der die Daten in MenuItems konvertiert. –