簡體   English   中英

用於 UserControls 的 WPF MVVM 依賴注入

[英]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和全局事件等可以有自己的看法。

棱鏡資源: https://prismlibrary.com/docs/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM