我有要求將WPF控件集成到現有的Windows窗體應用程序中。最簡單最簡單的方法是創建一個ElementHost
控件並將其Child
屬性設置爲我的WPF視圖。這工作正常,視圖顯示。如何在Windows窗體中使用MVVM來顯示WPF控件
但是,與視圖交互有點麻煩,並且需要修改後面視圖代碼中的字段和事物。如果我可以實例化底層視圖的視圖模型並以MVVM方式與它進行交互,那麼每當我更改其視圖模型的屬性時都會顯示和更新視圖,那麼更好的辦法是實現這種視圖模型。
有沒有人知道一種方法來做到這一點?
我有要求將WPF控件集成到現有的Windows窗體應用程序中。最簡單最簡單的方法是創建一個ElementHost
控件並將其Child
屬性設置爲我的WPF視圖。這工作正常,視圖顯示。如何在Windows窗體中使用MVVM來顯示WPF控件
但是,與視圖交互有點麻煩,並且需要修改後面視圖代碼中的字段和事物。如果我可以實例化底層視圖的視圖模型並以MVVM方式與它進行交互,那麼每當我更改其視圖模型的屬性時都會顯示和更新視圖,那麼更好的辦法是實現這種視圖模型。
有沒有人知道一種方法來做到這一點?
你不能用設計器做到這一點,但是當你在代碼中添加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
MVVM的本質是綁定。由於在Windows窗體中沒有這些,所以恐怕你不能在那裏使用MVVM。
謝謝。這很好。我問另一個問題關於讓樣式工作[這裏](http://stackoverflow.com/questions/5259376/getting-generic-xaml-working-from-wpf-control-embedded-in-winforms) – cjroebuck 2011-03-10 12:11:00