[英]How to resolve System.Reflection.TargetInvocationException' error?
我在應用程序中使用了MVVM Light庫,該庫提供了一個Ioc容器,稱為ViewModelLocator。 但是,當我在定位器中為新的視圖模型設置第二個屬性時,得到了System.Reflection.TargetInvocationException
我通過查看內部異常調試了此錯誤,似乎由於未在定位器中指定向其他VM傳遞參數而拋出此錯誤。
有誰知道如何在定位器類中設置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
}
}
}
這是我要在locator類中為其設置屬性的新VM:
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(){}
),也可以告訴服務定位器如何實例化對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.