[英]WPF MVVM Dependency Injection for UserControls
我正在使用 MVVM 模式開發 WPF.Net Core 5 應用程序,並且我正在嘗試使用依賴注入來學習新東西。
我剛剛修改了 App.xaml.cs class 如下,在初始登錄后,我可以按預期進入 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 的依賴注入的一個好的實現是什么? 我讀過一些關於復合應用程序的文章,但它似乎對嵌套的 UserControls 比在我的情況下更有用。
有什么建議嗎?
提前感謝您的可用性
如果您符合 MVVM 模式,那么您將為每個用戶控件設置 ViewModel,並在構造函數或方法主體中使用 DI 來注入您需要的“服務”。 然后,您可以使用 PRISM(MVVM 框架)之類的東西來觸發其他 ViewModel 可以訂閱的事件。 它還提供了在 MVVM 應用程序中導航的機制。
編輯:您可能還想研究使用“外殼”視圖,然后在里面使用用戶控件。 這將使您能夠在“shell”視圖中交換/導航到不同的用戶控件。 其中model和全局事件等可以有自己的看法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.