2013-09-27 53 views
1

嗯,我看到了很多這種類型的問題的解決方案,但我無法解決我的問題。我在一些wpf/mvvm應用程序上工作。我的應用程序的結構是這樣的:添加這個項目作爲參考將導致循環依賴mvvm

  • 一個項目視圖模型
  • 一個項目查看
  • 一個WCF服務項目

所以,問題是這樣的:我需要賦予新的DataContext到我的視窗,從我的viewmodel類。像這樣的東西(在我看來模型類):

SomeWindow window = new SomeWindow(); 
window.DataContex = this.someViewModel; 

問題是我無法訪問我的視圖類。我添加了我的viewmodel到我的視圖項目的引用,但不能將我的視圖的引用添加到我的viewmodel因爲我得到上述錯誤。 我該如何解決這個問題?

+0

移動參考,如何? WCF不應該引用任何人,視圖應該引用VM和可能的WCF,VM應該引用WCF而不是視圖。如果類型在錯誤的程序集中,請移動它們。 – Will

回答

3

我不明白爲什麼有必要在viewModels項目中分配數據上下文(爲什麼不在Views項目中)。但是如果你需要這樣做,最常見的方法就是爲這些目的創建另一個(中間)項目。這個新項目將引用Views項目和ViewModels項目。

另一方面,ViewModels和Views通常在同一個項目中(只在其他文件夾/命名空間中),所以在這種情況下,該問題不存在。

+0

我沒有描述爲什麼我需要這樣做,因爲我想保持簡短,只是堅持我的問​​題點。無論如何,我曾嘗試爲這些目的添加中間項目,但只是我得到了同樣的錯誤。我可以添加我的視圖的引用,但然後我冷不添加我的ViewModel的引用。 – Stojdza

+0

中間項目應該同時引用這兩個(views project,viewModels項目),這就是爲什麼它被使用 –

+0

好吧我做了一些中間項目的引用,但是當我創建我的窗口類的對象時,我只能使用初始化commponents和nothing其他。我如何訪問DataContext? – Stojdza

1

viewmodel不需要「知道」/引用視圖。所以你不需要在你的viewmodel項目中引用。

如果您想更改視圖的datacontext - 您應該簡單地更改綁定到該視圖的viewmodel的「workspace」屬性。

相關問題