创建详细信息视图模型的最佳实践(在Xaml中)

时间:2012-04-30 10:36:08

标签: mvvm windows-runtime

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

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

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

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

我有点不知所措,但我怀疑抽象工厂是正确的方法,我希望得到正确的,因为对象图实际上是这样的(产品 - >步骤>指令) ,所以任何重新工作都可能花费相当多的时间,但它基本上意味着我的视图模型,如果我沿着抽象工厂路线将需要三个抽象工厂,以及获取产品初始列表的服务(然后是给出了它有多少参数的代码味道!)。

2 个答案:

答案 0 :(得分:0)

如果你想在运行时解析视图模型(从代码中),工厂就是你的选择。

为了更容易,我还会考虑使用一些DI框架。我相信WinRT不会有很多,但autofac应该适用于地铁。

答案 1 :(得分:0)

如果要构建一些大的东西,依赖注入可能是这样做的方法。我个人通常只是在Navigate()调用中传递参数,并使用OnNavigatedTo处理程序中的这些参数初始化视图模型。