我有一些代碼看起來是這樣的:爲什麼我無法使用DataContext = {Binding}作爲我的上下文菜單?
<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 : Cannot find element that provides DataContext. BindingExpression:(no path); DataItem=null; target element is 'SomeContextMenu' (Name=''); target property is 'DataContext' (type 'Object')
爲什麼做Binding
的工作以外的上下文菜單中的一切,但不是用於上下文菜單?
啊,這是有道理的。我最終通過內嵌上下文菜單來解決問題,因爲它只有一個MenuItem,並且只在一個地方使用,但是您的解決方案也可以工作。 –