簡體   English   中英

在WPF應用程序中使用Unity DI容器

[英]Using Unity DI container in WPF application

我是WPF的新手,請考慮嘗試DI。 我決定將OnStartup方法作為Composition Root。

  protected override void OnStartup(StartupEventArgs e)
    {      
        IUnityContainer container = new UnityContainer();
        container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
        var mainWindow = container.Resolve<MainWindow>();
        mainWindow.Show();
    }

但是,在應用程序啟動后,出現兩個窗口,它們是正常的,包含我的內容,並且完全為空(似乎未初始化)。 怎么了?

您需要在App.XAML中刪除StartUri。 設置應用程序主窗口也是一個好習慣。 請參考下面的代碼。

protected override void OnStartup(StartupEventArgs e)
    {
        IUnityContainer container = new UnityContainer();
        container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
        var mainWindow = container.Resolve<MainWindow>();            
        Application.Current.MainWindow = mainWindow;
        Application.Current.MainWindow.Show();
    }

暫無
暫無

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

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