3
|
Aran Mulholland JohnnyAce · 技术社区 · 15 年前 |
![]() |
1
1
问题是ContextMenu的 apparently the root of their own visual tree 我在某个地方读到它接受它的父级DataContext,但在加载时只接受一次,所以如果父级DataContext更改,则menuitems不会。(不幸的是,我找不到该权利的链接,不是) 我以前遇到过这个问题,我所做的就是使用 Josh Smith's Virtual Branch Pattern . 这是相当技术性的,但是这篇文章帮助我很好地理解了这个可视化树的胡说八道到底是怎么回事。 实际上,您创建了绑定到视图的DataContext的桥。这座桥是被创造出来的 作为静态资源 ,允许您从上下文菜单绑定到它,即使它在可视化树之外。 将此添加到XAML:
这就是我说的那座桥。它获取数据上下文并将其推送到Bridges数据上下文,这是一个静态资源(如我之前所说)。 然后,您只需将其发送到ContextMenu的DataContext:
现在,扔掉所有相关的路径等,在菜单项中使用常规绑定,这样就可以了。DataContext将像往常一样更新。 只有一个音符:显然,您必须在dataContext中具有一些属性,才能识别要使用的命令,但我相信您可以找到它。这个解决方案只处理ContextMenu不更新的方式 |