WPF中的自定义控件在Winforms中是必要的吗?

在一次采访中,该公司询问我在WPF中使用自定义控件。 我发现了WPF创建控件(datatemplate,控件模板,样式,触发器等等)的所有function,必须编写一个覆盖OnRender方法的自定义控件,实际上并不是必需的。 后来发现他们的大部分开发都在Winforms中。

如果从100%WPF方向控制,是否有必要使用OnRender覆盖编写自定义控件? Winform方法实际上没有使用创建控件的WPF组合技术,它似乎不是基于WPF知识的问题。

谢谢哈罗德

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

如果你是winforms经验丰富的开发人员,那么在wpf中仍然可以接受winform-way思考。 一阵子。 在这里你可能会发现自己主要是自定义控件(包含xaml和代码,甚至没有xaml)。 但是你学的越多,你所需要的就越少。 许多任务都可以在wpf中完成,因为它非常灵活。 每个实体都包含可以自定义的内容:模板,样式,转换器,行为甚至是简单的事件处理。

您可以从自定义控件开始,然后找出您不需要的东西(或者可以将其降级为简单的重新定位)。

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

  1. 概述TextBlock。 仅仅因为您需要自定义OnRender (为轮廓构建和绘制几何体)。

  2. 动画内容。 在更改内容时应用过渡动画。 我几乎可以在没有自定义控制的情况下完成它,但是存在一个问题 – 在从左到右,从右到左,从上到下或向下转换时计算动画逻辑。 它很容易在一个自定义控件中使用。 但是可以使用UserControl和视图,而不是很漂亮。

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

结论:它很好,也很有用,虽然比winforms(你根本没有其他选择)的方式要少。