我正在创建一个 Windows 8 应用程序(但我怀疑任何使用 Xaml 的人都可以帮助我)。它基本上归结为:一个带有产品列表的页面,单击产品会打开一个详细信息页面。
在我的组合根中,我解析了第一页的视图模型,并适当地设置了数据上下文,但我不确定当用户选择产品时将视图模型传递到第 2 页的最佳做法是什么。
据我所知,我有以下选择:-
- 第一个视图模型需要一个能够使用 .create(product) 方法为第 2 页创建视图模型的抽象工厂,这将被传递给第一个视图模型构造函数
- 让第二个视图模型实现一个带有产品属性的接口,允许我使用属性注入,并将第二个视图模型作为参数传递给第一个视图模型。
- 创建一个我知道许多人认为是反模式的服务定位器。
我有点茫然,但我怀疑抽象工厂是正确的方法,我想正确地做到这一点,因为对象图实际上是这个(产品->步骤->指令),所以任何重新工作可能需要相当多的时间,但这基本上意味着如果我沿着抽象工厂路线走,我的视图模型将采用三个抽象工厂,以及用于获取初始产品列表的服务(然后这是给定的代码气味它有多少参数!)。