我对现代ui框架很新。我正在添加新页面(usercontroller)作为ContentSource页面。 我正在使用IOC框架(IviewModels和ViewModels)。我收到错误,说没有找到加工构造函数。因为usercontroll默认构造函数注入了Iviewmodel对象。
我被困在这里,有些人可以帮助解决这个问题 感谢
this is my main window code + this is my usercontroll cs file
this is the error
答案 0 :(得分:1)
正如您所发现的那样,您不能使用参数化构造函数,因为它们会破坏框架。 导航仅使用页面URI,没有其他额外参数。
那么,如何在没有参数化构造函数的情况下使用IoC? 您应该使用依赖注入容器。 像这样:
public partial class MyPage: UserControl
{
private MyViewModel: IViewModel;
public MyPage()
{
MyViewModel = MyViewModelFactory.Create(IViewModel);
InitializeComponent();
}
}
MyVewModelFactory是一个创建其他对象的对象。 你不必自己编码。 一些常见的IoC容器是:
使用Unity您的代码将是:
public partial class MyPage: UserControl
{
private MyViewModel: IViewModel;
public MyPage()
{
MyViewModel = container.Resove<IViewModel>();
InitializeComponent();
}
}
使用MEF您的代码将是:
public partial class MyPage: UserControl
{
[Import(GetType(IViewModel))]
private MyViewModel: IViewModel;
public MyPage()
{
InitializeComponent();
}
}