У меня есть код, который выглядит примерно так:
<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 Ошибка: 3: не удается найти элемент, предоставляющий DataContext. BindingExpression: (без пути); DataItem = NULL; целевой элемент - SomeContextMenu (Name = ''); Свойство target - «DataContext» (тип «Object»)
Почему Binding
работает для всего, кроме контекстного меню, но не для контекстного меню?