在WPF和WinForms控件之间进行对话的最佳方式是什么?

时间:2014-02-24 05:56:35

标签: c# wpf winforms

我的项目是用WinForms(C#)编写的。我有WPF用户控件(实现为MVVM),将放置在项目中。一些WinForms用户控件应该对WPF用户控件中所做的更改进行讨论/做出反应。 我可以想到几种方法:

  1. 用户控件可以公开属性。例如:UC3将参考UC4,它将引用WPF-UC。 UC3还将参考UC2,它将引用UC1,因此UC1可以订阅WPF-UC中的一些事件。
  2. 使用某种Mediator,因此我们将依赖性保持在最低限度。
  3. 注入某种基本上可以作为Mediator的服务。
  4. 我认为方法#2是最好的,因为我总能移动控件。另一方面,这种方法有哪些缺点/陷阱?你觉得怎么样?

    如果方法#2是最好的,那么我可以使用任何库而不是重新发明轮子吗?

    例如,在下面的图片中 - 应该在WPF UserControl更改时更新TARGET。 黑色 - WinForms控件。红色 - WPF控制。

    enter image description here

1 个答案:

答案 0 :(得分:0)

我会在WPF ViewModel中创建委托,因为它是由Winforms模块创建的实例 - 您可以在那里注册这些事件,然后您可以指示其他winforms组件根据您的喜好进行操作,因为它们也连接到已注册成分