在Metro风格应用程序中的页面(视图)之间共享模型

时间:2012-08-20 21:11:05

标签: c# mvvm navigation singleton microsoft-metro

我有一个由多个页面组成的Metro应用程序,所有页面都来自 LayoutAwarePage 。我已经实现了导航和导航。这就像一个魅力。我现在要做的是在这些视图之间共享公共数据,例如:

  • 访问模型,我们将其命名为 MyModel
  • 控制器的一个实例,我们将其命名为 MyController
  • 常见的业务逻辑,我们将其命名为 MyLogic

过去我习惯通过构造函数“注入”这些依赖项。现在不再可能了(对吧?)。我怎么能这样做,否则请记住我想避免:

  • 单身人士(因为测试)
  • 公共静态属性(类似于单身人士)

将一种上下文对象传递给Frame.Navigate()方法是否可以?有人有个好建议吗?

P.S。我想避免使用像MVVM light或Cocoon这样的Frameworks。

Cheerio!

2 个答案:

答案 0 :(得分:0)

听起来你正在寻找一些非常简单的东西。如果是这种情况,我只需要向App.xaml.cs添加一个属性。

您可以在应用程序的任何位置设置/获取该属性,例如(App.Current as App).MyProperty。非常蛮力但它有效。

我也看到了相同的方法,但是有一个主容器分配给App.xaml.cs属性,然后是一个带有getContainer()方法的扩展方法 - 只是为了减少你必须编写的次数(App.Current作为App)。

答案 1 :(得分:0)

好吧,我想我找到了一个很好的解决方案[1]。它仍然不是我想要的,因为它使用MVVM光工具包及其Messenger概念 - 但它很干净。

[1] http://forums.silverlight.net/p/200771/468507.aspx