2011-10-14 78 views
0

我想圍繞WPF中的依賴注入概念。如果我有一個ViewModel被定義爲依賴注入的對話框,那麼在運行時的什麼時候注入的依賴注入ViewModel被初始化並給出一個值?是否在對話框的構造函數中調用的Initialize()方法期間?什麼時候在WPF中初始化一個依賴注入對象?

public partial class LoginDialog 
    { 

     private LoginViewModel _loginViewModel; 

     [Dependency] 
     public LoginViewModel LoginViewModel 
     { 
      get { return _loginViewModel; } 
      set 
      { 
       ... 
      } 
     } 

     public LoginDialog() 
     { 
      InitializeComponent(); 
     } 
    } 
+0

你知道依賴注入和WPF根本沒有關係嗎?除了您可以在WPF應用程序中使用DI(與任何其他應用程序一樣),但您也可以編寫一個完全不使用DI的WPF應用程序。 – CodingGorilla

+0

@編碼大猩猩是的,我知道他們沒有關係。我只是提到它來給出一些背景。我真的只是想了解在運行時何時初始化Dependency Injected變量。 –

回答

2

您的問題的答案是:這取決於(沒有雙關語意)。這取決於很多事情,您使用哪種DI框架(Unity,Ninject等)?在Unity中(我對這個有更多的經驗),你必須定義一個對象的生命週期範圍,並且根據它的生命週期,你可能會在不同的時間完成任務。

嘗試更具體:通常,您在那裏演示的依賴屬性將在實例化其定義的對象時「設置」。所以當你的LoginDialog被實例化時,應該設置LoginViewModel

+0

+1。在所有主要的DI框架中都是如此,儘管一些默認情況下(例如Windsor)使用單身生活方式,默認情況下每個請求使用一些(例如Structuremap)。 –