【wpf】数据模板 + ContextMenu 导致的命令 绑定失效
admin
2024-03-09 08:13:03

背景

测试环境  .net6 wpf

TreeView  中我写了一个数据模板,数据模板的StackPanel 中,我加了一个ContextMenu右键菜单。



结果 ContextMenu一切绑定都无效了,RelativeSource各种找都没有用!

一开始以为是模板导致的,但模板中其他元素的绑定都是OK的,说明应该不是模板的问题。于是我开始怀疑是ContextMenu的问题。

有的文章说:ContextMenu是一个独立的窗口不在可视化树中,所以向上找不到。

于是我在一个其他元素中写了ContextMenu,发现一切正常:


解决方案

使用x:Reference




这里有个解决方法是通过 x:Reference 指定绑定对象的Name(代码中的 top_uc 是我给被绑定控件取的名字),然后明确的指定Path。如果绑定的内容在DataContext里面,这个DataContext是不能丢的,一定要写上!

小结

目前的判断是 Command 绑定的特殊性,如果Command 处于数据模板之内,就必须写全。

如果Command即在模板里,还在ContextMenu里。那就必须使用x:Reference 了

结束

目前只是看到现象,如果哪位大佬知道具体原因,请和我在评论区探讨,感谢!

最后,强调一下,我是在 .net6 wpf 下做的测试,其他环境可能表现不一样。

相关内容

热门资讯

央行:物价水平已现积极变化 (来源:科创100ETF基金)  人民银行新闻发言人、副行长邹澜1月15日在国新办新闻发布会上表示,...
高市早苗要求中方撤回“对日两用... 商务部1月15日举行例行新闻发布会,针对近日日本首相高市早苗表示,中方加强两用物项出口管制措施仅针对...
恒源煤电董事傅崑岚到龄退休 1月15日,恒源煤电(600971)发布公告,董事傅崑岚因法定年龄退休,已于2026年1月14日申请...
2025年累计销量破16万 同... 2024年、2025年可以说是近十年中,国内车市竞争最卷的两年,关于这一点,曾经的新势力销冠哪吒以及...
投资者提问:贵公司的业务跟航天... 投资者提问:贵公司的业务跟航天+和智能智造有关系吗?董秘回答(航天智造SZ300446):您好,公司...