0

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

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

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

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

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

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

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

4

2 回答 2

1

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

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

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

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

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

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

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

于 2012-12-12T20:22:06.377 回答
0

啊,对不起-我想我已经找到了我问题的大部分答案。

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

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

于 2012-12-12T20:15:57.260 回答