【ContextMenu】DataContext不自动更新_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 【ContextMenu】DataContext不自动更新

【ContextMenu】DataContext不自动更新

 2013/10/21 16:13:05  wdysunflower  博客园  我要评论(0)
  • 摘要:参考资料http://www.orcode.com/article/Presentation_20147076.html问题现象通过绑定集合至ContextMenu的ItemsSource的方式动态生成右键菜单,但是集合数据已经更新了,实际看到的菜单却还会原来的,操作执行的对象以及结果也还是原来的。已经不止一次遇到,由于WPF本身的缺陷导致绑定无效产生的问题,如RadioButton的IsChecked,还有这里提到的ContextMenu。分析问题参考资料中提到
  • 标签:

参考资料

http://www.orcode.com/article/Presentation_20147076.html?

?

问题现象

通过绑定集合至ContextMenu的ItemsSource的方式动态生成右键菜单,但是集合数据已经更新了,实际看到的菜单却还会原来的,操作执行的对象以及结果也还是原来的。

已经不止一次遇到,由于WPF本身的缺陷导致绑定无效产生的问题,如RadioButton的IsChecked,还有这里提到的ContextMenu。

?

分析问题

参考资料中提到:

ContextMenu类不是WPF可视化树的一部分,尽管如此,ContextMenu能够获得它的父控件的DataContext。问题是,获取只发生一次。

如果父进程的数据环境的变化,在以后的时间,在ContextMenu的数据上下文将不会被更新。

如果上下文菜单绑定到变量的东西,像一个ListBox选定的项目,这将导致问题。

?

解决问题

解决方法是,DataContext"显式绑定"菜单上的数据上下文:

<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}" >

  • 相关文章
发表评论
用户名: 匿名