c# - 将 Silverlight MVVM 与 Prism/Unity 结合使用,并且需要检测 View 何时关闭

标签 c# silverlight mvvm prism

我正在使用 MVVM(模型- View - View 模型)模式编写应用程序,并利用 Microsoft P&P 团队的 Prism 和 Unity 位。

我有一个包含项目列表的 View 。这些项目包含在 ViewModel 中的 ObservableCollection 中,View 中的列表框数据绑定(bind)到该 ViewModel(ViewModel 被设置为 View 的 DataContext)。在 ViewModel 中,我有一个运行的计时器,它每 30 秒触发一次服务器轮询以获取新数据。当数据返回时,我将其编码到 UI 线程并将新数据添加到 ObservableCollection。这一切都非常有效。

我遇到的问题是我需要在 View 关闭时停止计时器。我不确定在这里要注意什么事件。当区域中的 View 被替换时,Unity 中有什么东西会告诉我吗?是否有一个事件最适合从 View 中用于此,并可能将该事件(或外观)传递给 ModelView?我的 View 是每个 P&P 示例的 UserControl。没有我能找到的“卸载”事件,也没有覆盖的方法。

我已经在考虑编写自己的服务来处理 View 更改(RegionManager 的某种外观),并且可能只是在我的 View 上实现一个通用接口(interface)来进行清理或在它们从 View 中删除时在它们上实现 IDisposable看法。但是,如果在核心 Silverlight 框架或 Unity/Prism 的范围内有一种干净的方法来做到这一点,我宁愿选择这条路。

编辑 - 答案:

我最终通过选择最接近我正在为我的解决方案所做的事情来标记 Anderson Imes 的答案。但实际上,我也在使用来自 PL 和 GraemeF 的部分,并且对每个人都投了赞成票。这对我来说是一个很好的回应,因为它让我对区域有了更好的了解,给了我另一个框架来查看,并验证了我可能正在沿着正确的道路实现服务来处理 View 更改,而不仅仅是调用进入 RegionManager。

最佳答案

我认为您正在寻找的是来自 Region Manager 框架的 IActiveAware 接口(interface)(参见 RegionActiveAwareBehavior ):

The RegionActiveAwareBehavior is responsible for notifying a view if it is active or inactive. The view must implement IActiveAware to receive these change notifications. This active aware notification is one-way to the view; the view cannot affect its active state by changing the active property on the IActiveAware interface.

关于c# - 将 Silverlight MVVM 与 Prism/Unity 结合使用,并且需要检测 View 何时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749549/

相关文章:

c# - 我们如何将视频实时编码为 mp4 并在 ASP.NET 中进行流式传输

c# - 在 MVVM 中对 ViewModel 进行批量更改时,如何使用批处理,例如 BeginUpdate/EndUpdate?

c# - 如何确定.net 中的sql server 安全模式?

c# - 将 sprintf 转换为 C# 的问题

c# - 查找段落中的特定关键字

.net - 如何在 Silverlight 的组合框中为选定和下拉状态使用不同的模板?

c# - 运行 SQL Server 报告服务时如何解析 "The remote server returned an error: (401) Unauthorized"?

c# - Silverlight 与 Java Applet 在 32 位/64 位计算机上的互操作性

具有编程式 UI 自定义的 Android MVVM

java - 为什么我们要从存储库返回实时数据? (MVVM 安卓)