WPF 中的自定义控件与 WinForms 中一样必要

本文关键字:一样 自定义控件 WinForms WPF | 更新日期: 2023-09-27 18:36:11

在一次采访中,该公司询问我在 WPF 中使用自定义控件的情况。我发现,凭借创建控件(数据模板、控件模板、样式、触发器等)的 WPF 方式的所有功能,实际上没有必要编写重写 OnRender 方法的自定义控件。后来发现,他们的大部分发展都是在Winforms。

如果从 100% WPF 方向访问控件,则需要多久编写一次具有 OnRender 重写的自定义控件?Winform 方法实际上没有利用 WPF 组合技术来创建控件,这似乎是一个不基于很多 WPF 知识的问题。

谢谢哈罗德

WPF 中的自定义控件与 WinForms 中一样必要

好问题(虽然有点基于意见)但没有答案?定影。

如果你是有winforms经验的开发人员,那么在wpf中思考winform-way仍然是可以接受的。一时间。在这里,您可能会发现自己制作大部分自定义控件(包含 xaml 和代码,甚至没有 xaml)。但是你学得越多,你就越不需要它。许多任务都可以在 wpf 中完成,因为它非常灵活。每个实体都由可以自定义的东西组成:模板、样式、转换器、行为甚至普通事件处理。

您可以从自定义控件开始,然后找出您并不真正需要它的内容(或者可以降级为简单的重新设计样式)。

当我开始制作第一个严肃的 wpf 项目时,有 3 个自定义控件,它们仍然存在。原因如下。

  1. 分级显示的文本块。仅仅因为您需要自定义OnRender(构建和绘制轮廓几何图形)。

  2. 动画内容。在更改内容时应用过渡动画。我几乎可以在没有自定义控件的情况下做到这一点,但是有一个问题 - 从左到右、从右到左、上下或向下过渡时计算动画逻辑。在一个自定义控件中很容易拥有它。但有可能有UserControl和视野,但仍然不那么漂亮。

  3. 图。仅仅因为它太复杂而无法呈现Visual并且由于使用 gdi+ 的性能,可以在 ms 内绘制数百万个点(数千个数字)。

结论:它很好而且有用,尽管比在winforms中要少得多(在那里你根本没有其他选择)。