【问题标题】:How do I use MVVM from within Windows Forms to display a WPF control如何在 Windows 窗体中使用 MVVM 来显示 WPF 控件
【发布时间】:2013-02-20 12:20:17
【问题描述】:

我需要将 WPF 控件集成到现有的 Windows 窗体应用程序中。最简单的方法是创建一个ElementHost 控件并将其Child 属性设置为我的WPF 视图。这工作正常,视图显示。

但是,与视图交互有点麻烦,并且需要修改后面视图代码中的字段和事物。如果我可以实例化底层视图的视图模型并以 MVVM 方式与它交互,那么当我更改其视图模型的属性时让视图显示和更新会更好。

有谁知道这样做的方法吗?

【问题讨论】:

    标签: wpf winforms mvvm


    【解决方案1】:

    您无法使用设计器执行此操作,但是当您在代码中添加 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
    

    【讨论】:

    • 谢谢。这很好用。我问了另一个关于让样式起作用的问题here
    【解决方案2】:

    MVVM 的本质是绑定。既然你在 Windows 窗体中没有这个,恐怕你不能在那里使用 MVVM。

    【讨论】:

    • 当然你可以从 MVVM 绑定中获益。无论您在 ViewModel(也来自 WinForm 应用程序)上提交的任何更改都会直接反映在 View 中。据我了解,这就是这种情况下所需要的。
    • 他在 Windows 窗体中使用它。正如他所提到的,他必须手动更改属性,因为他在那里没有绑定。
    • 我不介意被否决,但告诉一些可以节省某人时间和精力的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多