我正在使用MVVM模式开发一个WPF .Net Core 5应用程序,并尝试使用依赖注入来学习新的知识。
我刚刚按照以下方式修改了App.xaml.cs类,在初始登录后,我可以正常访问MainWindow:
public partial class App : Application
{
private readonly ServiceProvider _serviceProvider;
public App()
{
ServiceCollection services = new ServiceCollection();
ConfigureServices(services);
_serviceProvider = services.BuildServiceProvider();
}
private void ConfigureServices(ServiceCollection services)
{
services.AddTransient<frmSQLConnection>();
services.AddTransient<frmLogin>();
services.AddSingleton<MainWindow>();
}
protected override void OnStartup(StartupEventArgs e)
{
if ((SuccessfullyConnected || _serviceProvider.GetService<frmSQLConnection>().ShowDialog() == true) && _serviceProvider.GetService<frmLogin>().ShowDialog() == true)
{
_serviceProvider.GetService<MainWindow>().Show();
}
else
{
Shutdown();
}
}
}
我的疑问现在出现了,因为MainWindow.xaml将由顶部的RibbonMenu和紧挨着下面的TabControl组成,就像这个例子一样:输入图片描述 我的问题是对于UserControls,什么是好的依赖注入实现方式?我读过一些关于Composite Application的文章,但它似乎更适用于嵌套的UserControls而不是我的情况。
有什么建议吗?
提前感谢您的帮助。