关于wpfMVVM子窗体给父窗体传值问题

EAison 2015-11-12 03:31:42
父窗体有DataGrid控件,DataGrid里面有很多行数据。另外还有一个定时器用来对父窗体Datagrid的数据源进行更新(从后台数据库读取)。现在选中一条数据,点击跳转按钮跳转到另一个窗体(我称之为子窗体),此时把定时器暂停不刷新。现在我在子窗体中成功获取倒了父窗体传过来的值,然后我改变了子窗体的里面的值并且对数据库进行了更新(数据库更新也成功了)。在关闭子窗口时候,我对DataGrid的数据源重新从数据库读取,并且恢复定时器。现在的问题是父窗体的数据源并没有更新,被选中的那一行还在。求问:如何使父窗体的数据进行更新!我用事件监听也用过了,不可以。

Model层我也实现了INotifyPropertyChanged接口,DataGrid数据源集合也是用ObservableCollection集合,用的是MVVM,父窗体和子窗体的ViewModel都是在一个类中。
下面是部分代码截图
数据更新代码

子窗体数据关闭代码
...全文
1256 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EAison 2015-11-12
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
[quote=引用 3 楼 EAison 的回复:] [quote=引用 2 楼 duanzi_peng 的回复:] 你的 ObservableCollection集合 是定义在 VM 中么?? 看你的子窗体 代码中 有段 this.AlarmModelsList = ............... 这个list 定义在哪里。
是这样的 我子窗体和父窗体共用的一个VW 这个VM里只有一个AlarmModelList这个集合 这样可以吗?(ps:我也是艾德死粉)[/quote] 必须只有一个AlarmModelList集合。 现在我在子窗体中成功获取倒了父窗体传过来的值,然后我改变了子窗体的里面的值并且对数据库进行了更新(数据库更新也成功了) -》 应该是在 VM 中定义一个 AlarmModel 对象(也要进行NotifyPropertyChanged操作),在DataGrid 的行选择事件中 给这个对象赋值,同时打开 子窗体,子窗体上绑定的就是VM 中的AlarmModel 对象,这样 你修改子窗体中的数据,会自动更新到父窗口的UI上。貌似 MVVM lz 了解的不清楚。[/quote] 我子窗体上就是一个TextBox和两个Button按钮,一个确定,一个取消。然后子窗体的DataContext绑定的是VM,DataContext="{Binding Model,ElementName=uc}" Model就是VM的一个实例化对象。。。你说的子窗体上绑定AlarmModel能解释一下怎么绑定吗?
EAison 2015-11-12
  • 打赏
  • 举报
回复
我子窗体上就是一个TextBox和两个Button按钮,一个确定,一个取消。然后子窗体的DataContext绑定的是VM,DataContext="{Binding Model,ElementName=uc}" Model就是VM的一个实例化对象。。。你说的子窗体上绑定AlarmModel能解释一下怎么绑定吗?
  • 打赏
  • 举报
回复
引用 3 楼 EAison 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 你的 ObservableCollection集合 是定义在 VM 中么?? 看你的子窗体 代码中 有段 this.AlarmModelsList = ............... 这个list 定义在哪里。
是这样的 我子窗体和父窗体共用的一个VW 这个VM里只有一个AlarmModelList这个集合 这样可以吗?(ps:我也是艾德死粉)[/quote] 必须只有一个AlarmModelList集合。 现在我在子窗体中成功获取倒了父窗体传过来的值,然后我改变了子窗体的里面的值并且对数据库进行了更新(数据库更新也成功了) -》 应该是在 VM 中定义一个 AlarmModel 对象(也要进行NotifyPropertyChanged操作),在DataGrid 的行选择事件中 给这个对象赋值,同时打开 子窗体,子窗体上绑定的就是VM 中的AlarmModel 对象,这样 你修改子窗体中的数据,会自动更新到父窗口的UI上。貌似 MVVM lz 了解的不清楚。
EAison 2015-11-12
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
你的 ObservableCollection集合 是定义在 VM 中么?? 看你的子窗体 代码中 有段 this.AlarmModelsList = ............... 这个list 定义在哪里。
是这样的 我子窗体和父窗体共用的一个VW 这个VM里只有一个AlarmModelList这个集合 这样可以吗?(ps:我也是艾德死粉)
  • 打赏
  • 举报
回复
你的 ObservableCollection集合 是定义在 VM 中么?? 看你的子窗体 代码中 有段 this.AlarmModelsList = ............... 这个list 定义在哪里。
EAison 2015-11-12
  • 打赏
  • 举报
回复
小弟写了有什么不明白的请各位赐教,这个问题困扰我一段时间了。。谢谢 垦请大家积极评论

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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