2009-07-24 48 views
1

編寫MVVM WPF應用程序時,視圖模型必須設置爲視圖的數據上下文。對我來說,通常是在代碼中。但是我意識到,如果我將視圖模型聲明爲xaml內部的靜態資源並在其中設置綁定,則不需要在代碼中執行此操作。這意味着我不必在第三個類的某個地方協調視圖和視圖模型,就像在App中一樣。可以將視圖模型聲明爲視圖中的靜態資源嗎?

這樣做可以接受嗎?

謝謝!

回答

1

我會這麼說。它意味着View的ViewModel具體的知識,但你必須設置它,我喜歡這裏的codebehindless方法。

如果你正在使用依賴注入這不合適,但如果你不是,我會堅持這種方法。

+0

我不知道是什麼依賴注入是的,所以我想我沒有使用它:) – djcouchycouch 2009-07-24 15:58:31

+0

如果你在做MVVM,你可能想要調查它。如果你的項目有任何規模,我也建議看看(正如史蒂夫羅賓斯正確提到的)棱鏡。這是DI的一個非常好的應用。有幾件事讓MVVM變得更容易一些。如果您至少沒有使用mvvmfoundation.codeplex.com,那麼您的工作太辛苦:) – 2009-07-24 16:13:17

0

可以接受,是的,但是如果您使用PRISM或任何類型的DI,那麼從容器中解析它,然後使用代碼或使用標記擴展來設置datacontext會更有意義,具體取決於你的確切解決方案

0

如果你想在查看-First方法使用依賴注入(DI)儘量視圖模型定位模式:

public static class ViewModelLocator 
{ 
    public static MainWindowViewModel MainWindowViewModel 
    { 
    get 
    { 
     return ObjectFactory.GetInstance<MainWindowViewModel>(); 
    } 
    } 
}; 

和WPF代碼:

<Window 
    ... 
    DataContext="{x:Static Services:ViewModelLocator.MainWindowViewModel}" 
    > 
相關問題