0

我正在创建一个 Windows 8 应用程序(但我怀疑任何使用 Xaml 的人都可以帮助我)。它基本上归结为:一个带有产品列表的页面,单击产品会打开一个详细信息页面。

在我的组合根中,我解析了第一页的视图模型,并适当地设置了数据上下文,但我不确定当用户选择产品时将视图模型传递到第 2 页的最佳做法是什么。

据我所知,我有以下选择:-

  • 第一个视图模型需要一个能够使用 .create(product) 方法为第 2 页创建视图模型的抽象工厂,这将被传递给第一个视图模型构造函数
  • 让第二个视图模型实现一个带有产品属性的接口,允许我使用属性注入,并将第二个视图模型作为参数传递给第一个视图模型。
  • 创建一个我知道许多人认为是反模式的服务定位器。

我有点茫然,但我怀疑抽象工厂是正确的方法,我想正确地做到这一点,因为对象图实际上是这个(产品->步骤->指令),所以任何重新工作可能需要相当多的时间,但这基本上意味着如果我沿着抽象工厂路线走,我的视图模型将采用三个抽象工厂,以及用于获取初始产品列表的服务(然后这是给定的代码气味它有多少参数!)。

4

2 回答 2

0

在您想在运行时(从代码)中解析视图模型的情况下,工厂是要走的路。

为了更容易,我还会考虑使用一些 DI 框架。我相信 WinRT 不会有很多,但autofac应该可以与 Metro 一起使用。

于 2012-04-30T11:18:23.943 回答
0

如果您正在构建大型项目,则依赖注入可能是实现此目的的方法。就我个人而言,我通常只是在 Navigate() 调用中传递参数,并在 OnNavigatedTo 处理程序中使用这些参数初始化视图模型。

于 2012-04-30T16:33:17.497 回答