С помощью this article я создал TreeView с помощью WPF с MVVM. Теперь я хочу добавить другое контекстное меню для каждого элемента на одном уровне. Исследование google позволяет мне создавать одно и то же контекстное меню для каждого элемента на одном уровне.TreeView добавляет другой контекст Меню для каждого элемента на том же уровне, WPF MVVM
Итак, мой вопрос У вас есть идея, которая позволяет мне создавать контекстное меню для каждого элемента на одном уровне с полным уважением к архитектуре MVVM?
Ниже код, который позволит мне создать такое же контекстное меню для каждых элементов на одном уровне:
<TreeView.Resources>
<!-- Begin Context Menu -->
<ContextMenu x:Key="TreeViewContextualMenuLevel2" >
<MenuItem Command="{Binding AddLevelTwoCommand}" Header="Add"/>
</ContextMenu>
<ContextMenu x:Key="TreeViewContextualMenuLevel3" >
<MenuItem Command="{Binding EditCommand}" Header="Edit" />
<MenuItem Command="{Binding RemoveCommand}" Header="Remove " />
</ContextMenu>
<!-- End context Menu -->
<!-- Begin Level 1 -->
<HierarchicalDataTemplate
DataType="{x:Type local:FirstLevelViewModel}"
ItemsSource="{Binding Children}" >
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="/Images\RedCircle.png" />
<TextBlock Text="{Binding DefEntity1Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<!-- End Level 1 -->
<!-- Begin Level 2: Root -->
<HierarchicalDataTemplate DataType="{x:Type local:SecondLevelViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal" ContextMenu="{StaticResource TreeViewContextualMenuLevel2}">
<Image Width="16" Height="16" Margin="3,0" Source="/Images\RedCircle.png" />
<TextBlock Text="{Binding DefEntity2Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<!-- End Level 2: Root -->
<!-- Begin Level 3 -->
<DataTemplate DataType="{x:Type local:ThirdLevelViewModel}">
<StackPanel Orientation="Horizontal" ContextMenu="{StaticResource TreeViewContextualMenuLevel3}">
<Image Width="16" Height="16" Margin="3,0" Source="/Images\GreenCircle.png" />
<TextBlock Text="{Binding ThirdLevelEntityName}" />
</StackPanel>
</DataTemplate>
<!-- End Level 3 -->
</TreeView.Resources>
Заголовок и команды не существует в класс MenuItem !!! – xtensa1408
Возможно, вы использовали класс MenuItem из winforms, управляющего библиотекой/пространством имен. Проверьте, что MenuItem - это тот, который вы ожидаете. Вы можете обнаружить, что эти свойства существуют в классе MenuItem, если вы google "wpf menuitem" – VMaleev