我目前正在开发一个允许使用插件的应用程序。其中一项功能是该插件可以公开一个设置 UI,托管应用程序将嵌入某处供用户查看。
我想知道是否有某种方法可以向我的插件界面添加一个属性,以允许插件开发人员创建 wpf 或 winforms UI 并通过此属性公开它,同时保持属性类型化?(即不使用“对象”作为属性类型),或不使用单独的属性(即 WPFUI、WinFormsUI)等。
这两种技术的工作方式非常不同。我建议公开Windows.Forms.Control或FrameworkElement,但不要同时公开(至少不是来自同一个插件 API)。
如果您公开 a Control
,则使用ElementHost提供 WPF 控件很简单。同样,aFrameworkElement
可以由 Windows 窗体插件通过WindowsFormsHost提供。
我在这里的决定将更多地取决于主机应用程序的开发方式。如果您使用的是 WPF,我强烈建议您将插件公开为FrameworkElement
.,因为这为您提供了更多的灵活性。如果您的主应用程序将基于 Windows 窗体,那么仅公开 a 就很Control
简单。
如果您不希望这种增加的复杂性,我实际上会推荐两个单独的 API - 一个用于 Windows 窗体用户,一个用于 WPF 用户,因为这使最终用户部分的简单性保持不变。根据插件机制,这通常很容易提供。