控件开发选型指南

作者: 杨凯本尊 | 来源:发表于2018-12-23 11:07 被阅读77次
你好,旧时光

本文概要

  如果你是从WinForm框架转到WPF框架的开发人员,我想你肯定是已经超级厌烦了WinForm自定义控件的复杂程度,笔者也是在这种情况下转为WPF开发。通过阅读本文你将学会一种技能,这种技能会让你在面对非标准控件(标准控件是指微软提供的类库中的控件)的开发不至于手足无措,它像黑夜里的灯塔,给你在编写非标准控件时提供指引。

面对非标准控件,我们应该想些什么?

当我们面对非标准控件的开发时,我们一般会有三种想法:

  1. 有没有满足我需求的第三方库
  2. 有没有其他开发人员已经实现我们的需要或相似的需求
  3. 自己重新造轮子

  显然本文肯定不是想要教会我们怎么使用Github或者Nuget去搜索满足我们需求的第三库,因此第1、2两点我们不考虑;这里假设我们面对的需求就是需要我们自己重新造轮子,那么,我们应该怎么选择呢?有哪些好的标准和尺子来做衡量我们的选择呢?

控件选型的标准和尺子

  如果我们对样式、绑定、控件模板、数据模板、类型转换器等WPF的基础知识已经了解,那么我们应该知道WPF框架提供的控件都是无外观的控件,具体就是WPF框架将控件的功能(行为)和外观进行了剥离,也就是分开定义;对于Controls中的类来说,.cs用来定义控件有那么功能(行为),而用ControlTemplate来定义控件的展示外观;DataTemplate用来布局数据的展示外观,知道了这两点之后,我们面对非标准控件的编写就需要顺序考虑一下几点:

  1. 列出非标准控件的功能列表
  2. 对标标准库中,查找是否有相似的功能控件,如果有跳到第3步,如果没有跳到第4步
  3. 考虑使用DataTemplate是否可以达到需求,可以,则结束选型;不能,则考虑使用ControlTemplate来实现需求,同样结束选型
  4. 考虑是否可以通过附件属性扩展标准控件来满足需求,如果可以跳回第3步,不可以,跳到第5步
  5. 考虑需求的功能列表是否可以通过组合来实现,如果可以则使用UserControl来实现,结束选型;如果不可以,则跳到第6步
  6. 自定义控件,如果到了需要自定义控件的步骤,那么自定义控件的基类选择同样重要,我们可以选择FrameworkElement或者Control,选择基类的原则是,尽量少编码

举了例子

  通过上面的阅读,接下来我们来举个例子。这里需要我们编写一个环形进度条的控件。
  首先这个需求需要一个基于Rang和Value控件,在标准控件中,我们有抽象类RangeBase、具体类Slider以及ProgressBar;RangeBase是一个抽象类,如果标准库中提供的它的子类都不满足需求,我们可以选择这个类用于自定义控件的基类。而Slider和ProgressBar的区别在于Value是否可以通过UI进行交互,而我们的需要是不需要交互的,因此,我们选择ProgressBar类。
  接下来,我们考虑是修改ProgressBar的DataTemplate属性还是修改ControlTemplate来达到需求呢?很显然ProgressBar的默认外观是不符合我们需求的,因此我们需要修改ControlTemplate。

通告

  下篇文章笔者将演示在编写环形进度条控件中使用视觉分层艺术对WPF开发的重要性


相关文章

  • 控件开发选型指南

    本文概要   如果你是从WinForm框架转到WPF框架的开发人员,我想你肯定是已经超级厌烦了WinForm自定义...

  • WPF基础之Binding解析(一)

    写在前面的话 在我的另一的文集WPF Control Development中写了控件开发选型指南一文,笔者以为W...

  • 技术选型指南

    主要来源: 技术选型指南参阅: DevOps

  • 技术选型指南

    这是一篇综合类技术选型指南,试图为你提供一份比较通用的技术选型思维框架。当你需要进行技术选型时,可以参照它来设计自...

  • 移动IM开发指南3:如何优化登录模块

    《移动IM开发指南》系列文章将会介绍一个IM APP的方方面面,包括技术选型、登陆优化等。此外,本文作者会结合他在...

  • 移动IM开发指南2:心跳指令详解

    《移动IM开发指南》系列文章将会介绍一个IM APP的方方面面,包括技术选型、登陆优化等。此外,本文作者会结合他在...

  • 移动IM开发指南1:如何进行技术选型

    《移动IM开发指南》系列文章将会介绍一个IM APP的方方面面,包括技术选型、登陆优化等。此外,本文作者会结合他在...

  • ionic ,react-native , native 移动端

    移动端开发如何选型?这里介绍一下我眼中的ionic,react-native,native 三种移动端开发选型对比...

  • 技术选型指南

    文章转载自:ThoughtWorks洞见 作者:汪志成 这是一篇综合类技术选型指南,试图为你提供一份比较通用的技术...

  • 电子MES系统需求分析及选型必看指南

    电子MES系统需求分析及选型必看指南 在制造业竞争日益激烈的市场中,降低产品成本、提高产品质量和缩短产品的开发周期...

网友评论

    本文标题:控件开发选型指南

    本文链接:https://www.haomeiwen.com/subject/nhmgkqtx.html