之前我曾经使用过MVVM,但是MVVM-Light让我感到困惑,所以如果这很愚蠢我就很抱歉(只是那些任何文档)。
无论如何,我已经知道你只使用ViewModelLocator
来自Laurent的回答here的“单身”观点。
那么我该如何处理不在定位器中的视图模型?因为看起来我失去了MVVM-Light的好处。
我现在要做的是转到视图的代码隐藏,并为我的视图模型创建一个依赖属性,并将我的数据上下文设置为它。
有更好的方法吗?因为我没有任何可混合性(Visual Studio和ReSharper甚至不能识别XAML编辑器中的数据上下文)。更不用说我没有可设计的伪数据了。
换句话说:
从我看到的可混合性来自依赖注入找到定位器,那么当你不使用定位器时你会怎么做?
答案 0 :(得分:1)
将我的评论转换为答案
AFAIK您可以通过在从ServiceLocator解析VM时传递唯一键来获取新的VM实例。你不必仅仅依靠单独使用VMLocator。
您可以从Here获取此过程的示例。在MainWindow.xaml.cs
中,当请求新的非模态窗口时,视图的每个实例都与相应VM的新实例耦合,该实例可以在代码隐藏中找到。
如何将视图模型实例绑定到视图(不在定位器中)
^^不确定这是否是您所追求的,但是对于MVVM Light(对于设计时间VM),在检查是否处于设计模式后,您可以在其构造函数中设置DataContext
类似的东西:
using GalaSoft.MvvmLight;
...
public MainWindow() {
InitializeComponent();
if (ViewModelBase.IsInDesignModeStatic)
DataContext = new MainViewModel();
}