我在Window.Resources中有一些XAML代码:
<ContextMenu x:Key="ParentContextMenu">
<MenuItem Header="MenuItem..." Command="{Binding SomeCommand}"/>
</ContextMenu>
<DataTemplate x:Key="ChildDataTemplate" DataType="{x:Type System:String}">
<TextBlock Text="{Binding}" VerticalAlignment="Bottom" />
</DataTemplate>
<HierarchicalDataTemplate x:Key="ParentDataTemplate" DataType="{x:Type ViewModels:IParentViewModel}" ItemsSource="{Binding Path=Agents}" ItemTemplate="{StaticResource ChildDataTemplate}">
<StackPanel Orientation="Horizontal" ContextMenu="{StaticResource ParentContextMenu}">
<TextBlock Text="{Binding ServerName}" />
</StackPanel>
</HierarchicalDataTemplate>
然后
<TreeView ItemsSource="{Binding Items}" ItemTemplate="{StaticResource ParentDataTemplate}"/>
为什么SomeCommand没有绑定到Context菜单项?
我确信DataContext包含一个ViewModel,因为其他命令运行良好。有什么想法吗?
答案 0 :(得分:0)
此XAML存在任何问题。
所以,我认为你需要抄袭实现IParentViewModel
的类。
1)在我看来,你的SomeCommand就像SomeCommand : ICommand
。验证访问修饰符是否公开(公开 class SomeCommand : ICommand
)
2)验证命令属性的访问修饰符是否为public (例如
public SomeCommand SomeCommand
{
get { return _someCommand; }
set
{
_someCommand = value;
OnPropertyChanged("SomeCommand");
}
}
3)确认您已创建命令实例(private SomeCommand _someCommand = new SomeCommand();
)
另外,如果您有依赖项属性,请执行此操作。 希望它有所帮助。