C# WPF中的自定义控件是否与Winforms中的自定义控件相同?

C# WPF中的自定义控件是否与Winforms中的自定义控件相同?,c#,wpf,winforms,custom-controls,C#,Wpf,Winforms,Custom Controls,在一次采访中,公司询问了我在WPF中使用自定义控件的情况。我发现,凭借WPF创建控件(datatemplate、控件模板、样式、触发器等)的强大功能,编写一个覆盖OnRender方法的自定义控件真的没有必要。后来发现他们的大部分开发都是在Winforms中进行的 如果来自100%WPF方向的控件,则需要多久编写一次带有OnRender覆盖的customcontrol?Winform方法实际上并没有利用WPF组合技术来创建控件,这似乎是一个不基于WPF知识的问题 谢谢 哈罗德问得好(虽然有点基于观

在一次采访中,公司询问了我在WPF中使用自定义控件的情况。我发现,凭借WPF创建控件(datatemplate、控件模板、样式、触发器等)的强大功能,编写一个覆盖OnRender方法的自定义控件真的没有必要。后来发现他们的大部分开发都是在Winforms中进行的

如果来自100%WPF方向的控件,则需要多久编写一次带有OnRender覆盖的customcontrol?Winform方法实际上并没有利用WPF组合技术来创建控件,这似乎是一个不基于WPF知识的问题

谢谢 哈罗德

问得好(虽然有点基于观点),但没有答案?修理

若您是winforms经验丰富的开发人员,那个么在wpf中仍然可以接受winform方式。有一段时间。在这里,您可能会发现自制的控件大多是自定义控件(包含xaml和代码,甚至没有xaml)。但是你学的越多,你需要的就越少。许多任务可以在wpf中完成,因为它非常灵活。每个实体都包含一些可以定制的东西:模板、样式、转换器、行为,甚至是简单的事件处理

您可以从自定义控件开始,然后找出您真正不需要的内容(或者可以将其降级为简单的重新序列化)

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

  • 轮廓文本块。这仅仅是因为您需要自定义
    OnRender
    (为轮廓构建和绘制几何体)

  • 动画内容。更改内容时应用过渡动画的步骤。我几乎可以在没有自定义控件的情况下完成,但有一个问题——在从左到右、从右到左、从上到下或从下到上转换时计算动画逻辑。它很容易在一个自定义控件中实现。但是可以使用
    UserControl
    和view,而不是像现在这样

  • 图表。这仅仅是因为它太复杂了,无法用
    可视化
    显示,而且由于使用gdi+的性能,在
    ms
    内可以绘制数百万个点(数百位数)


  • 结论:它是好的和有用的,尽管比winforms中的要少得多(在winforms中,您只需要没有其他选项)。

    在使用WPF的这些年里,我想我已经编写了整整两个自定义控件。那些人对WPF一无所知。重写OnRender()只有在您真正知道自己在做什么的情况下才是一个好主意,而不是像对待winforms.WPF一样对待WPF,试图将一个正方形的木钉塞进一个圆孔中任何形式的Winformsway@HighCore如何编写2.513自定义控件?不要回答,在我的小生命中,我看到了很多半生不熟的代码。@我无法理解你的评论。顺便说一句,为了清楚起见,我用WPF编写了各种各样的“自定义UI”,从图表设计者到面包屑条到动画时间线,再到棋盘,再到像标尺一样的控件,甚至是指南针。其中没有一个需要重写OnRender()。感谢您的反馈。。。可能在某种程度上是基于观点的,但对于来自Winforms的新WPF开发人员来说,这可能是指导WPF正确使用的巨大帮助。使用模板、样式和触发器在很大程度上是WPF的组成部分。所以这似乎也是一个有效的技术讨论。。。谢谢,重要的是要知道未来的雇主是否知道他们在干什么。。。