TreeView 中我写了一个数据模板,数据模板的StackPanel 中,我加了一个ContextMenu右键菜单。
结果 ContextMenu一切绑定都无效了,RelativeSource各种找都没有用!
一开始以为是模板导致的,但模板中其他元素的绑定都是OK的,说明应该不是模板的问题。于是我开始怀疑是ContextMenu的问题。
有的文章说:ContextMenu是一个独立的窗口不在可视化树中,所以向上找不到。
于是我在一个其他元素中写了ContextMenu,发现一切正常:
这里有个解决方法是通过 x:Reference 指定绑定对象的Name(代码中的 top_uc 是我给被绑定控件取的名字),然后明确的指定Path。如果绑定的内容在DataContext里面,这个DataContext是不能丢的,一定要写上!
目前的判断是 Command 绑定的特殊性,如果Command 处于数据模板之内,就必须写全。
如果Command即在模板里,还在ContextMenu里。那就必须使用x:Reference 了
目前只是看到现象,如果哪位大佬知道具体原因,请和我在评论区探讨,感谢!
最后,强调一下,我是在 .net6 wpf 下做的测试,其他环境可能表现不一样。
上一篇:DAMA数据管理大纲图