如何解决 System.Reflection.TargetInvocationException' 错误?

How to resolve System.Reflection.TargetInvocationException' error?

我在我的应用程序中使用 MVVM Light 库,它提供了一个名为 ViewModelLocator 的 Ioc 容器。但是当我在定位器中为新视图模型设置第二个 属性 时,我得到 System.Reflection.TargetInvocationException

我通过查看内部异常对此进行了调试,似乎抛出此错误是因为我没有在我的定位器中指定将参数传递到另一个 VM。

有谁知道如何在定位器 class 中设置我的 ViewSubjectGradeViewModel 属性 以说明传递到该模型的 ScoreModel 参数?

这是供参考的ViewModelLocator:

namespace LC_Points.ViewModel
{
    /// <summary>
    /// This class contains static references to all the view models in the
    /// application and provides an entry point for the bindings.
    /// </summary>
    public class ViewModelLocator
    {
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            SimpleIoc.Default.Register<MainViewModel>();
            SimpleIoc.Default.Register<ViewSubjectGradeViewModel>();    
        }

        public MainViewModel MainPage
        {
            get { return ServiceLocator.Current.GetInstance<MainViewModel>(); }
        }

        public ViewSubjectGradeViewModel ViewSubjectGradePage
        {
            get { return ServiceLocator.Current.GetInstance<ViewSubjectGradeViewModel>(); }
        }

        public static void Cleanup()
        {
            // TODO Clear the ViewModels
        }
    }
}

这是我要在定位器中设置 属性 的新虚拟机 class:

namespace LC_Points.ViewModel
{
    public class ViewSubjectGradeViewModel 
    {
        public ViewSubjectGradeViewModel(IEnumerable<ScoreModel> addedSubjectGradePairs)
        {
            this.AddedSubjectGradePairsCopy = addedSubjectGradePairs;           
        }

        //Property for collection passed from MainViewModel
        public IEnumerable<ScoreModel> AddedSubjectGradePairsCopy { get; set; }         
    }
}

您没有默认构造函数。

在 C# 中,只要您指定一个接受参数的构造函数,您的默认构造函数(空构造函数)就会被移除。您可以指定默认构造函数 (public ViewSubjectGradeViewModel(){}) 或告诉服务定位器如何实例化您的对象。