【发布时间】:2013-02-20 12:20:17
【问题描述】:
我需要将 WPF 控件集成到现有的 Windows 窗体应用程序中。最简单的方法是创建一个ElementHost 控件并将其Child 属性设置为我的WPF 视图。这工作正常,视图显示。
但是,与视图交互有点麻烦,并且需要修改后面视图代码中的字段和事物。如果我可以实例化底层视图的视图模型并以 MVVM 方式与它交互,那么当我更改其视图模型的属性时让视图显示和更新会更好。
有谁知道这样做的方法吗?
【问题讨论】:
我需要将 WPF 控件集成到现有的 Windows 窗体应用程序中。最简单的方法是创建一个ElementHost 控件并将其Child 属性设置为我的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。
【讨论】: