我刚刚使用 mvvmlight 创建了我的第一个 c# / XAML 应用程序,并且我尝试尽我所能实现 MVVM 模式(WP8 应用程序)。但是,我已经慢慢地将我的代码变成了某种风格,我认为它没有正确实现该模式!任何关于事情应该如何的建议都会有很大帮助。
例如,使用 mvvmlight 我大量使用 ViewModelLocator。我的一些视图模型会立即创建,例如 SettingsViewModel(有一个 SettingsView)。
SimpleIoc.Default.Register<SettingsViewModel>(true);
然后在我项目的其他地方,我的其他视图模型将通过属性或方法直接访问此视图模型以获取偶尔的信息……就像这样;
mySetting = ViewModelLocator.SettingsStatic.GetSomeSetting(var);
我担心的是我的视图模型越来越多地以这种方式相互交谈。问题在于它们现在可能无法独立测试,因为它们需要或假设存在其他视图模型。
这里的任何指针都会很棒!
编辑:另一个例子是有一个 PersonView,而 PersonViewModel 有一些用于 UI 显示的辅助方法。在某些情况下,我还有其他需要显示此信息的视图....并且我使用 viewmodellocator 来获取它们,而不是在当前视图模型中再次编写辅助方法。