Sl 4,MVVM:VM何时可供View使用?

时间:2011-03-21 21:40:10

标签: silverlight-4.0 mvvm


我有一个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上设置?如果是这样,怎么样?

感谢您的任何见解...

1 个答案:

答案 0 :(得分:1)

替换

<UserControl.Resources>
    <viewModels:PageViewModel x:Key="vm" />
</UserControl.Resources>

by:

<UserControl.DataContext>
    <viewModels:PageViewModel />
</UserControl.DataContext>