“'MainViewModel'类型必须从DependencyObject派生”

时间:2013-04-11 18:11:57

标签: wpf mvvm-light

我正在尝试为MVVMLight WPF重新配置我的MVVMLight SL5应用程序 我想我已经连接了所有正确的GalaSoft库,但在启动时我得到标题中显示的异常 获取MainPage的ViewModel时,它出现在ViewModelLocator中:

    public MainViewModel Main
    {
        get
        {
            MainViewModel mvm = null;
            try
            {
                mvm = ServiceLocator.Current.GetInstance<MainViewModel>();
            }
            catch (Exception xx)
            {
                System.Diagnostics.Debug.WriteLine(xx.Message);
            }
            return mvm;
        }
    }

异常来自GetInstance()调用 MainPage源自Window; DataContext在xaml中设置。

    DataContext="{Binding Main, Source={StaticResource Locator}}"

任何关于出错的提示都将受到赞赏.... (目标.Net 4.5,GalaSoft WPF4 libs v4.0.30319)

1 个答案:

答案 0 :(得分:8)

注册依赖属性时,ownerType必须从DependencyObject继承,MainViewModel不会。{/ p>

但是,鉴于您正在使用MVVM Light并且该属性被称为“UserName”,我建议您根本不使用依赖属性。而是使用带有INotifyPropertyChanged的常规属性。 MVVM指示灯中的ViewModelBaseRaisePropertyChanged来帮助您解决此问题。

依赖项属性通常用于用户控件。对于绑定到viewmodel的数据,INPC通常是要走的路。