【发布时间】:2015-07-06 16:55:09
【问题描述】:
总结:所以我有两个应用程序:一个是WinForms,另一个是WPF。我试图弄清楚如何单击 WinForms 应用程序中的按钮并让 WPF 应用程序响应该单击。
因此,为了获得更详细的信息,我正在开发现有的 WinForms 应用程序,并添加新功能。对于其中一个功能,我需要创建一个单独的 WPF 应用程序,其中包含一个位于 WinForms 应用程序之上的 InkCanvas,并允许用户在 WinForms 应用程序上进行绘图。
我在 WinForms 应用程序上有 3 个用于控制 InkCanvas 的按钮:一个用于启用绘图,一个用于启用擦除,一个用于清除画布。我需要弄清楚的是如何在 WPF 应用程序中处理这 3 个按钮的 Click 事件。
我一直在研究诸如 PRISM 的 EventAggregator(尽管我不知道这是否可以在单独的进程之间工作)和 WCF 之类的东西。 WCF 似乎是我应该使用的,但我没有使用它的经验,所以它运行缓慢。我遇到过关于 WCF 双工服务的文章 (link)(link)
所以我想我的问题是:在单独的 WPF 应用程序中处理 WinForms 按钮的 Click 事件的最佳方法是什么?如果这个问题已经被问过或者太含糊,请提前道歉。
【问题讨论】:
-
为什么不在 WinForms 应用程序中直接使用 WPF 控件呢?您可以使用
ElementHost(msdn.microsoft.com/en-us/library/…) 控件托管 WPF 控件... -
我已经尝试过这样做。简而言之,透明度是我无法让它发挥作用的原因。基本上,每当我尝试使 ElementHost 的背景透明时,它都会在 WinForms 应用程序中呈现的 3D 场景中挖出一个洞。我一直无法弄清楚如何防止这种情况发生。几周前我在这里发布了一个关于这个确切问题的问题 (stackoverflow.com/questions/30508405/…)。
-
您是否尝试过使用整个 WPF 窗口? stackoverflow.com/questions/8311956/…
-
嗯,让我试一试...这是我还没有真正尝试过的一件事。
-
天哪,这确实有效... 呃,当我只需要使用 WPF 窗口时,我觉得我已经浪费了几天试图让 WCF 工作。非常感谢您的帮助。现在,我该怎么处理这个问题?从技术上讲,您的建议回答了我的另一个问题(如果您想写下我上面链接的问题的答案,那就太好了)。