c# - WinFORMS 中的 WPF 用户控件 : Project Structuring

标签 c# .net winforms wpf-controls winforms-interop

场景

我决定为我的新应用程序使用 WPF 技术。必须通过从 WinForms 窗口单击菜单来调用此应用程序。因此,我创建了一个 WPF UserControl 库,并将其集成以使用 Element Host 在父 WinForms 表单中显示。

我的申请

它包含 3 个子用户控件,它们封装在另一个带有 tabContent Control 的用户控件中。我更喜欢这种方法,因为从 Child UserControl 触发事件并在 WinForms 中处理(订阅事件)似乎很痛苦。

我的问题

现在面临着访问 Winforms 中的 UserControl 元素的同样痛苦的任务,我出于正确的项目结构原因创建了 Data Manager 类(UserControl 不应包含 Data Manager 类 UI)。请指导我如何构建我的项目/如何订阅事件/访问 WPF 中的 WPFUserControl 元素。

最佳答案

看一下 MVVM Light Toolkit 的 Messenger 类(也可以单独使用)。它有助于解耦您的控制。该信使采用发布/订阅模式。您的 WPF UserControls 可以发布对象,WinForms Host 可以监听这些通知。交换的消息(对象)最好放置在单独的程序集中,因为它们定义了 WPF UC 库和 WinForms 应用程序之间的共享契约。

关于c# - WinFORMS 中的 WPF 用户控件 : Project Structuring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14706179/

相关文章:

c# - 如何为每个用户打开单独的窗口

c# - 多个 AddHostedService dotnet 核心

c# - 安装项目 Visual Studio 和 Nuget

c# - GUID比较怪异

c# - 正确设计 WCF 服务

c# - 更改 Windows 窗体上的边框颜色

c# - 将 Razor View Engine 与 Nancy 一起使用,.cshtml 不是可用的扩展名

javascript - 如何使用 gecko 浏览器引擎在 C# 中单击 anchor 标记

c# - 为什么最低地址空间(尽管非空)中的内存访问被 .NET 报告为 NullReferenceException?

c# - 事件处理程序不触发