2011-03-10 83 views
5

我有要求將WPF控件集成到現有的Windows窗體應用程序中。最簡單最簡單的方法是創建一個ElementHost控件並將其Child屬性設置爲我的WPF視圖。這工作正常,視圖顯示。如何在Windows窗體中使用MVVM來顯示WPF控件

但是,與視圖交互有點麻煩,並且需要修改後面視圖代碼中的字段和事物。如果我可以實例化底層視圖的視圖模型並以MVVM方式與它進行交互,那麼每當我更改其視圖模型的屬性時都會顯示和更新視圖,那麼更好的辦法是實現這種視圖模型。

有沒有人知道一種方法來做到這一點?

回答

4

你不能用設計器做到這一點,但是當你在代碼中添加ElementHost的Child時,你可以直接創建和分配ViewModel。當您在此ViewModel上提交更改時,它們會直接反映在WPF視圖中。

MyView view = new MyView(); 
MyViewModel model = new MyViewModel(); 
view.DataContext = model; 
ElementHost.Child = view; 


model.SomeBoundProperty = somethingElse; 
//Magic update of the WPF view 
+0

謝謝。這很好。我問另一個問題關於讓樣式工作[這裏](http://stackoverflow.com/questions/5259376/getting-generic-xaml-working-from-wpf-control-embedded-in-winforms) – cjroebuck 2011-03-10 12:11:00

-4

MVVM的本質是綁定。由於在Windows窗體中沒有這些,所以恐怕你不能在那裏使用MVVM。

+0

當然,您可以從MVVM綁定中獲益。無論您對ViewModel(也是來自WinForm應用程序)所做的更改都直接反映在視圖中。正如我理解這是什麼需要在這種情況下。 – fixagon 2011-03-10 10:04:45

+0

他在Windows窗體中使用它。正如他所提到的,他必須手動更改屬性,因爲他沒有約束力。 – Aliostad 2011-03-10 10:07:09

+0

我不介意被低估,而是告訴可以節省一些人的時間和精力的事情。 – Aliostad 2011-03-10 10:07:43

相關問題