我有类似下面这样的代码:
<HierarchicalDataTemplate
DataType="{x:Type local:SomeType}"
ItemsSource="{Binding SomeOtherItems}"
>
<DockPanel Margin="4">
<DockPanel.ContextMenu>
<local:SomeContextMenu DataContext="{Binding}" />
</DockPanel.ContextMenu>
<CheckBox IsChecked="{Binding SomeBooleanProperty, Mode=TwoWay}" />
<TextBlock
Margin="4,0"
Text="{Binding Name}" />
</DockPanel>
</HierarchicalDataTemplate>
没有上下文菜单时,一切都按预期工作。但是当我添加了这些行:
<DockPanel.ContextMenu>
<local:SomeContextMenu DataContext="{Binding}" />
</DockPanel.ContextMenu>
我为每个使用“HierarchicalDataTemplate”元素都收到了此(运行时)错误:
System.Windows.Data Error: 3 : 找不到提供DataContext的元素。 BindingExpression:(无路径); DataItem = null; target element是 'SomeContextMenu' (Name =''); target property 是 'DataContext'(类型为 'Object')
为什么绑定可以在除上下文菜单之外的所有内容中正常工作,但不能在上下文菜单中正常工作?