c# – 将Silverlight MVVM与Prism / Unity一起使用,并需要检测何时关闭视图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 将Silverlight MVVM与Prism / Unity一起使用,并需要检测何时关闭视图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1665字,纯文字阅读大概需要3分钟。
内容图文
![c# – 将Silverlight MVVM与Prism / Unity一起使用,并需要检测何时关闭视图](/upload/InfoBanner/zyjiaocheng/812/497afe4c0dad46b8879784fec90b4923.jpg)
我正在使用MVVM(Model-View-ViewModel)模式编写应用程序,并利用Microsoft P& P团队的Prism和Unity位.
我有一个包含项目列表的视图.这些项包含在ViewModel中的ObservableCollection中,View中的列表框是数据绑定的(ViewModel设置为View的DataContext).在ViewModel中,我有一个运行的计时器,每30秒触发一次服务器轮询以获取新数据.当数据返回时,我将其封送到UI线程并将新数据添加到ObservableCollection.一切都很好.
我遇到的问题是我需要在视图关闭时停止计时器.我不确定在这里要注意什么事件. Unity中有什么东西会告诉我该区域的视图何时被替换?是否有一个最适合从视图中使用的事件,并且可能将该事件(或外观)传递给ModelView?根据P& P示例,我的视图是一个UserControl.我找不到“卸载”事件,也没有覆盖的方法.
我已经在考虑编写自己的服务来处理视图更改(RegionManager的某种外观),并且可能只是在我的Views上实现一个公共接口来进行清理,或者在从视图中删除它们时对它们实现IDisposable.但是,如果在Corelight框架核心或Unity / Prism的范围内有一个干净的方法,我宁愿采取这种方式.
编辑 – 答案:
我最后选择了一个与我正在为我的解决方案做的最接近的答案来标记Anderson Imes的答案.但实际上,我正在使用来自PL和GraemeF的部件,并且每个人都投票.这对我来说是一个很好的回应,因为它让我对这些区域有了更好的了解,给了我另一个框架来查看,并验证我可能正在通过实现服务来处理视图更改而不仅仅是调用进入RegionManager.
解决方法:
我有这个确切的问题,最终基本上为此创建了一个接口:
public IApplicationEvents
{
void OnClose();
}
我集中了我的关闭视图代码,基本上只是在删除视图之前查找此接口.如果它在那里,我可以调用它(我检查了View本身以及DataContext属性,如果它是UIElement).
我使用附加属性和EventAggregator对它进行了一些保护,但这是基本的想法并且运行良好.
当您查看关闭时,您需要关闭它,特别是如果您正在使用DispatcherTimer(如您所愿).如果不这样做,这会导致一些非常糟糕的内存泄漏.
内容总结
以上是互联网集市为您收集整理的c# – 将Silverlight MVVM与Prism / Unity一起使用,并需要检测何时关闭视图全部内容,希望文章能够帮你解决c# – 将Silverlight MVVM与Prism / Unity一起使用,并需要检测何时关闭视图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。