【问题标题】:How to refresh data in the Prism Framework如何在 Prism 框架中刷新数据
【发布时间】:2012-11-30 14:57:44
【问题描述】:

我正在重写一个基于 Prism 的应用程序。它基于 WAF,并使用实体框架通过工作单元/存储库模式访问数据。

我打算使用事件聚合器来通知我的视图模型何时有新的工作单元可用(例如,在保存之后)。然后,他们可以用新工作单元中的新等效对象替换他们正在呈现的模型对象。

1.) 这是一个合理的想法吗?我还能如何通知我的视图模型它们正在显示过时的信息?

我只想让可见的视图模型重新查询数据库。当前未显示的 ViewModel 可能会延迟刷新,直到显示(我打算使用 INavigationAware 界面来执行此操作)。

2.) 同样,这是一种合理的方法吗?如何区分当前对用户可见的视图模型和不可见的视图模型?

作为 2.) 的替代解决方案,我正在考虑仅在需要时创建视图,并在它们被隐藏时立即销毁它们。这将解决“哪些视图模型可见”的问题,但似乎非常昂贵。

3.) Prism 是否打算以这种方式使用?

【问题讨论】:

    标签: .net wpf mvvm prism design-patterns


    【解决方案1】:

    1.) 这是一个合理的想法吗?我还能如何通知我的视图模型它们正在显示过时的信息?

    这归结为处理脏数据,无论是需要保存还是需要刷新。解决此问题的一种方法是 ViewModel 从服务中提取其数据,这将允许数据按需刷新。

    2.) 同样,这是一种合理的方法吗?如何区分当前对用户可见的视图模型和那些 那不是?

    如果您还打算通过 CI 来利用 IoC 和 DI,则 ViewModel 应该根据需要存在,并在构建时在运行时注入到 View 中。要管理数据的状态和持久性,您应该为此利用服务。

    3.) Prism 是否打算以这种方式使用?

    Prism 是自助式服务;棱镜不是单一的产品。 EventAggregator 用于跨模块通信。如果您的通信跨越模块,是的,这将很好地使用。如果通信是内部的,那么简单的事件就足够了。

    可见的概念取决于您的应用程序。 IActiveAware 只是一个接口,而不是实现。如果您的应用程序以表格方式构建,IActiveAware 将在该环境中运行良好。同样,实现细节对您如何使用接口很重要,但由应用程序结构驱动。

    【讨论】:

      【解决方案2】:

      啊,抱歉 - 我想我已经找到了大部分问题的答案。

      我不知道 IActiveAware 接口 (http://compositewpf.codeplex.com/discussions/277463),它似乎很好地解决了确定哪些视图模型可见的问题。

      我仍然对如何通知他们有可用的新数据感兴趣,但如果问题没有足够的剩余并且需要删除,我会理解。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 2017-11-12
        • 2016-07-06
        • 2015-08-18
        • 2011-02-03
        相关资源
        最近更新 更多