为什么我不能将DataContext = {Binding}用于我的上下文菜单?

我的代码看起来像这样:

         

没有上下文菜单,一切都按预期工作。 但是当我添加这些行时:

    

我为使用HierarchicalDataTemplate每个元素得到了这个(运行时)错误:

System.Windows.Data错误:3:找不到提供DataContext的元素。 BindingExpression :(没有路径); 的DataItem = NULL; target元素是’SomeContextMenu’(Name =”); target属性是’DataContext’(类型’Object’)

为什么Binding适用于除上下文菜单之外的所有内容,但不适用于上下文菜单?

首先, DataContext="{Binding}"没有多大意义,因为它会将DataContext绑定到DataContext。 这里的问题可能是ContextMenu不在逻辑树中,并且它的可视树是断开的,因为ContextMenus是浮动弹出窗口。

尝试通过PlacementTarget绑定DataContext:

  DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"