我们正在将 Forms 应用程序迁移到 MAUI,并为我们的页面之一提供了一个自定义 ViewModelLocator,通过覆盖 App.xaml.cs 中的
ConfigureViewModelLocator
来实现。
使用 Prism MAUI 应用程序,我们现在在哪里配置它?
我尝试在 .OnAppStart 中使用
ViewModelLocationProvider.Register
:
ViewModelLocationProvider.Register(typeof(TestPage).ToString(),() =>
{
// Code to get the ViewModel here...
return testPageViewModel;
});
但是 lambda 中的上述代码永远不会被调用。
这是做这件事的正确地点吗? ViewModelLocationProvider 注册在 MAUI 下工作吗?
ViewModelLocationProvider 的注册应该使用依赖注入来完成,如下所示。
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>();
// register the services here
builder.Services.AddSingleton<ViewModelLocationProvider>();
return builder.Build();
}
}
看一下这个示例:https://github.com/jfversluis/MauiDependencyInjectionSample/tree/main