为什么我不能将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}}"