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

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

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

子窗体数据关闭代码
...全文
1318 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
小弟写了有什么不明白的请各位赐教,这个问题困扰我一段时间了。。谢谢 垦请大家积极评论
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具备控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。

13,345

社区成员

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

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