2011-12-09 36 views
0

我仍然對WPF感到滿意,所以這可能是一個愚蠢的問題。我正在追蹤標籤控制問題的來源,並發現我不知道標題中問題的答案。是否Window.DataContext和Window.Resource ObjectDataProvider衝突

我的MVVM,精簡版項目模板把通常在Windows開始標記:

DataContext="{Binding Source={StaticResource Locator}, Path=Main}" 

而且從別的地方(我真的不記得了),我有這個方便的靜態資源:

<ObjectDataProvider x:Key="src" ObjectType="vm:MainViewModel" /> 

雖然我正在解決我的選項卡控制問題(我不會在這裏詳細介紹這些細節),但我意識到我不知道這兩種指向視圖模型的方式是否以任何方式受到了限制。視圖模型的兩個獨立實例?我不這麼認爲,因爲ViewModelLocator持有對Main的靜態引用。無論如何,我只是想確定我沒有犯過一個「格林尼」的錯誤。 謝謝, 吉姆

回答

0

我很確定,這將創建兩個不同的實例。您可以通過在MainViewModel構造函數中放置斷點並在調試模式下運行應用程序來輕鬆驗證此情況。

ObjectDataProvider是在MVVM流行之前引入的。我認爲WPF中的許多對象都被MVVM過時了,因爲現在我們在ViewModel層的代碼中創建這些對象和屬性。在你的情況,我想你可能不需要ObjectDataProvider,但可以在任何地方使用ViewModelLocator.Main。

乾杯, Laurent

+0

你是對的。我得到了我的視圖模型的兩個實例。事實證明,這是混淆我的標籤控制。所以它爲我解決了這個問題。謝謝您的幫助。此外,謝謝你的框架。 – JimBoone