我在 WPF 项目中使用 Prism 7.2.0.1422 并且有些东西我无法理解。
我正在尝试自定义 ViewModelLocationProvider,特别是使用“SetDefaultViewModelFactory”方法。所以我重写了 App.xaml.cs 中的方法“ConfigureViewModelLocator”,只是为了测试我试图引发一个异常:
protected override void ConfigureViewModelLocator()
{
base.ConfigureViewModelLocator();
ViewModelLocationProvider.SetDefaultViewModelFactory(viewModelType =>
{
throw new Exception("test ViewModelLocationProvider.SetDefaultViewModelFactory");
});
}
当我执行代码时,使用了“ConfigureViewModelLocator”方法,因此应该修改 ViewModelLocationProvider。但是“MainWindow”使用它的视图模型“MainWindowViewModel”正常打开。我使用相同的逻辑通过以下代码引发异常,以确保我没有犯错,这次抛出异常。
ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
{
throw new Exception("test ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver");
});
我还测试了使用https://github.com/PrismLibrary/Prism-Samples-Wpf上的示例项目“09-ChangeConvention”中的方法“SetDefaultViewModelFactory”自定义 ViewModelLocationProvider 。我注意到了同样的问题...
也许我做错了什么,或者“SetDefaultViewModelFactory”的自定义被忽略了......有人可以帮助我吗?谢谢