主窗口和子窗口两个VIEW使用同一个VIEWMODEL数据更新

cao.peng 2016-10-25 11:58:18
主窗口和子窗口两个VIEW使用同一个VIEWMODEL,子窗口COMMAND更新VIEWMODEL的TestList(绑定在主窗口的DATAGRID上)后,主窗口的显示数据不更新,主窗口更新TestList显示又正常,能否答疑解惑?
使用的是MVVMLight
...全文
636 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wswxfwps 2018-12-01
  • 打赏
  • 举报
回复
将 viewModel定义为 public static, 俩个界面都绑定一个就可以,我是这样解决的!
cao.peng 2016-10-27
  • 打赏
  • 举报
回复
ViewModelLocator中注册ViewModel,然后在XAML绑定静态资源,实现数据更新 储存在ViewModelLocator里的ViewModel类似于单例的存在,可以在全局引用绑定。
cao.peng 2016-10-26
  • 打赏
  • 举报
回复
WPF,定义如下 public ObservableCollection TestList { get { return testList;} set { testList = value; RaisePropertyChanged(() => TestList); } }
D56233577 2016-10-26
  • 打赏
  • 举报
回复
引用 8 楼 qq_17239723 的回复:
引用 3楼SlowlyHeart 的回复:
打个 断点看command执行了没有或者再set中加入断点 调试看看先
看了,TestList值有更新,界面无更新
试着刷新下看是否生效。 xxx.Items.Refresh();
cao.peng 2016-10-26
  • 打赏
  • 举报
回复
引用 3楼SlowlyHeart 的回复:
打个 断点看command执行了没有或者再set中加入断点 调试看看先
看了,TestList值有更新,界面无更新
  • 打赏
  • 举报
回复
引用 4 楼 hjq624779687 的回复:
我也遇到过类似的问题,你需要先置空,然后再赋值。。。
lz 要实现双向绑定机制是 NotifyPropertyChanged 机制引起的界面更新,而不是 ObservableCollection 机制所引起的界面更新。
  • 打赏
  • 举报
回复
扔掉 MVVMLight,你这个直接使用 INotifyPropertyChanged 接口来定义就好了。
  • 打赏
  • 举报
回复
引用 4 楼 hjq624779687 的回复:
我也遇到过类似的问题,你需要先置空,然后再赋值。。。
如果是这样的话,应该是因为TestList属性是引用类型,你只修改了里面某个元素的内容,而属性其实还是指向原来的TestList,并没有改变,因此不会触发属性改变通知。你将它值为空,然后再赋值,这是强制触发属性改变通知。
夏天的枫 2016-10-26
  • 打赏
  • 举报
回复
我也遇到过类似的问题,你需要先置空,然后再赋值。。。
exception92 2016-10-26
  • 打赏
  • 举报
回复
打个 断点看command执行了没有或者再set中加入断点 调试看看先
threenewbee 2016-10-25
  • 打赏
  • 举报
回复
是wpf还是winforms,用INotify接口

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧