【发布时间】:2013-08-07 12:08:39
【问题描述】:
我以前使用过 MVVM,但 MVVM-Light 让我很困惑,所以如果这是愚蠢的,我很抱歉(只是几乎没有任何文档)。
无论如何,我了解到您将 ViewModelLocator 仅用于来自 Laurent 的回答 here 的“单例”视图。
那么如何处理不在定位器中的视图模型?因为我似乎失去了 MVVM-Light 的优势。
我现在要做的是转到视图的代码隐藏并为我的视图模型创建一个依赖属性并将我的数据上下文设置为它。
有没有更好的方法?因为我没有任何可混合性(Visual Studio 和 ReSharper 甚至无法识别 XAML 编辑器中的数据上下文)。更不用说我没有要设计的虚拟数据。
换句话说:
从我所看到的可混合性来自于找到定位器的依赖注入,那么当你不使用定位器时你会怎么做?
【问题讨论】:
-
AFAIK 你可以通过传递一个唯一的密钥来获取一个新的 VM 实例,同时从
ServiceLocator解析 VM。您不必为了单例而不得不使用 VMLocator。 -
This 显示了基于 uniqueKey 请求新 VM 并在视图关闭时释放它们的示例。检查 MainWindow 代码隐藏部分。至于
how could I bind a view-model instance to the view (that's not in the locator),不确定我是否遵循这一点,但您可以在视图的代码隐藏构造函数中设置DataContext = new MyDummyVM();,或者如果您希望它仅用于设计时,您可以使用MVVM lightif (ViewModelBase.IsInDesignModeStatic) DataContext = new MyDummyVM(); -
@Viv 我想我明白了!非常欢迎您将其发布为获得代表的答案。我将测试并尝试立即使用此信息。
标签: c# wpf mvvm mvvm-light