WPF,MVVM,Shell和UserControls

时间:2011-07-23 05:39:05

标签: wpf user-controls telerik mvvm-light

我正在构建一个基于MVVM模式的WPF应用程序(使用MVVM Light)。它有一个外部“shell”,它给应用程序的主要外观(状态栏等),然后所有内容都包含在我用Telerik RadTransitionControl交换的各种用户控件中。我的两个问题如下:

  1. 我正在使用ViewModelLocator部件构建我的ViewModel以实现Blendability目的。这涉及一个基本的静态类,它返回一个ViewModel的新实例进行绑定,只要应用程序正在运行,实例就基本上是共享的。问题是我是否应该使用诸如“ViewLocator”之类的概念,因为它是一个静态类,对我的所有视图都有一个静态属性(应用程序有~10所以它不是很大)当我需要时转换到新视图我只是从静态集中拉出来。这方面的优点是易于使用,但有缺点吗?有没有更好的方法来追求这个?

  2. 过渡视图的最佳方法是什么?目前我正在将一个枚举传递给我的shell视图(通过消息传递)来指示我需要哪个视图,但这看起来真的很hacky并且不支持传递某些视图参数。我玩了一个自定义类,但我几乎需要一个不同的视图,它似乎可能是矫枉过正。 WPF开发人员为此过程执行的标准做法是什么?

  3. 提前感谢您的帮助。我是WPF的新手,所以我想确保我学习行业标准并尽可能避免黑客攻击。

1 个答案:

答案 0 :(得分:1)

我在使用相同模式的应用程序上工作。每次我们切换到应用程序的不同部分时,我们都有一个静态定位器并引用相同的ViewModel(详细信息视图,列表视图,地图视图等)。我们使用ViewModelLocator模式取得了很大成功 - 它非常简单了解。我们还没有对运行多个小时的应用程序进行过重大测试。

我们使用TabControl删除了标签样式,以便在应用程序的主屏幕之间进行切换。这为我们提供了一个入口点(我们在“裸”Tabcontrol上绑定的选定索引属性)来更改应用程序的主要屏幕。目前,我们不使用动画。