Mat*_*hew 3 .net c# data-binding wpf xaml
我的代码看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
没有上下文菜单,一切都按预期工作.但是当我添加这些行时:
<DockPanel.ContextMenu>
<local:SomeContextMenu DataContext="{Binding}" />
</DockPanel.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
我为使用以下内容的每个元素得到此(运行时)错误HierarchicalDataTemplate:
System.Windows.Data错误:3:找不到提供DataContext的元素.BindingExpression :(没有路径); 的DataItem = NULL; target元素是'SomeContextMenu'(Name =''); target属性是'DataContext'(类型'Object')
Binding除了上下文菜单之外,为什么s适用于所有内容,而不适用于上下文菜单?
H.B*_*.B. 17
首先,DataContext="{Binding}"没有太大意义,因为它会将DataContext绑定到DataContext.这里的问题可能是ContextMenu不在逻辑树中,并且由于ContextMenus是浮动弹出窗口,因此它的可视树被断开连接.
尝试通过PlacementTarget绑定DataContext:
DataContext="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4461 次 |
| 最近记录: |