我有一个View并将其DataContext设置为相应的ViewModel。在View代码隐藏中的Loaded事件处理程序中,我想在VM上设置一些属性。但是,View的DataContext在此时为空
在xaml中:
Loaded="UserControl_Loaded"
<UserControl.Resources>
<viewModels:PageViewModel x:Key="vm" />
</UserControl.Resources>
在Loaded处理程序中,page.xaml.cs:
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
PageViewModel pvm = this.DataContext as PageViewModel;
System.Diagnostics.Debug.WriteLine("pvm is " + ((null == pvm) ? "null" : pvm.ToString()));
}
我做错了什么,或者VM是否不可用,但是,当View触发Loaded事件时?
更新:真正的问题似乎是VM没有连接到View。在UserControl_Loaded中,pvm为null 目前,我在布局的根元素上设置DataContext;是否需要在UserControl上设置?如果是这样,怎么样?
感谢您的任何见解...
答案 0 :(得分:1)
替换
<UserControl.Resources>
<viewModels:PageViewModel x:Key="vm" />
</UserControl.Resources>
by:
<UserControl.DataContext>
<viewModels:PageViewModel />
</UserControl.DataContext>