我通常在代码中实例化我的ViewModel,并将其作为窗口或用户控件的DataContext进行设置。
对于这个简单的ViewModel:
public class ViewModel
{
public ObservableCollection<string> items { get; set; }
public ViewModel()
{
items = new ObservableCollection<string>();
items.Add("FirstItem");
items.Add("SecondItem");
items.Add("ThirdItem");
}
}
我正在添加我的本地命名空间,下面的语法将解决问题:
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
很好,我理解一个ViewModel对象被实例化并设置为窗口的DataContext,它按预期工作,但是否有任何方法可以从代码中访问已实例化的对象?
如果我在代码后台创建对象:
ViewModel vm = new VewModel();
this.DataContext = vm;
我能够访问VM实例,但是采用XAML方法,如何访问?
为了找到一个简单的答案,我创建了这个小例子。
DataContext
并不总是正确的方法。例如,如果您的ViewModel是通过View的构造函数注入的,则在代码后台中设置它是正确的方法。 - almulo