代码之家  ›  专栏  ›  技术社区  ›  Cory Charlton

在WinForm应用程序中使用ElementHost托管WPF用户控件有什么缺点吗?

  •  4
  • Cory Charlton  · 技术社区  · 14 年前

    好奇使用 ElementHost 在WinForm应用程序中宿主WPF用户控件?

    我这样问是因为总的来说,我觉得创建一个新的WPF应用程序需要花费很多时间,它有一个看起来不错的基本接口。不错,如果我创建一个新的WinForms应用程序并在其上抛出一些控件,我最终会得到一个基本的界面,它看起来和行为类似于许多其他应用程序,但看起来并不简单。如果我对一个WPF应用程序做同样的事情,我觉得我没有达到相同的结果,我最终得到一个白背景的“普通”应用程序,除非我将角色改为设计器,并花费额外的时间使其看起来像某种方式。

    然而,有些情况下,WPF对我来说是可取的,因为它相对容易创建一个风格化的接口。考虑一个视频播放器控件;在WPF中,我可以创建一些看起来非常漂亮和自定义的控件,但比WinForms控件花费的时间和精力要少得多。在这些情况下,使用wpf是有意义的,因为我花费的时间比我在paint上花费的时间要少。

    我意识到我使用了很多主观术语,但这是我对原始问题的推理。

    更新:

    只是为了澄清我的“视频播放器控制”示例。WPF不仅给了我 MediaElement 要播放,但如果我想说,在视频暂停时覆盖播放按钮,或者如果我想在鼠标位于某个位置时显示半透明的“播放/暂停/停止/音量”栏,wpf比任何WinForms选项都简单得多。

    编辑:

    也许我的配置选项有问题,或者有什么问题,但是当我查看wpf和winforms控件时,“描述”部分也会消失。更让人沮丧的是,在WPF属性窗体中按F1键并不能将您带到所处的特定属性/事件。

    更新:

    还有其他人吗?我更关心的是性能影响和/或特性限制,它们将通过在 元素元素 .到目前为止,这听起来像是运行时的一次性开销,但这就是全部吗?

    1 回复  |  直到 14 年前
        1
  •  5
  •   casperOne    14 年前

    我看到了一些潜在的缺点。

    首先,你现在有了 显示用户界面的方式。这可以从维护的角度提出问题,这取决于开发人员接触到代码。

    第二,WPF确实有一个与之相关联的运行时(用于调度事件、依赖属性管理等),但它是一次性成本。如果您将它用于少量的控件,那么您将按照它的使用比例支付相对较大的成本。

    我不会说这些都是交易破坏者,这完全取决于你的应用程序和你的团队。

    推荐文章