如何在Windows窗体中使用MVVM来显示WPF控件
问题描述:
我有要求将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