UWP小书 - 如何学习新的控件
:::tip
本章涉及知识点:
- 控件的来源
- 如何熟悉控件(踩坑)
:::
前言
我们知道,应用和平面设计作品不一样。对于平面设计作品来说,每一种元素都是服务于视觉的,而对应用来说,元素更多的是为了服务于功能。这种既具备功能又具有视觉表现的元素,我们称其为控件。
平面设计作品由视觉元素组成,而应用则由控件组成。
UWP作为应用开发平台,自然也提供了诸多控件供开发者选择,常见的比如按钮、文本、弹窗等,这些我们之前都接触过了,但全部的基础控件加起来有七十余个,你也许不会全都使用,但在应用开发过程中,至少会接触二三十个控件。这么多的控件,我很难一一讲解,坦白来说,时至今日我用过的控件也不过三四十个。
所以授人以鱼不如授人以渔,本章就来告诉你如何根据自己的需求寻找合适的控件并使用它。
控件的来源
UWP默认提供了七十余个控件,未来随着版本迭代还会陆续增加,但UWP应用控件却并不总依赖于官方提供,概括来说,UWP应用控件主要有以下来源:
- UWP官方提供(有着详细的文档和技术支持,是最为基础的控件集)
- Windows Community Toolkit(有微软官方背景,开源于Github的社区工具集)地址
- 以Telerik为代表的第三方工具集,Telerik
官方提供的自然是基础,不必多言。
Windows Community Toolkit也是由微软发起的,由社区进行更新维护的开源控件集,在这里面有许多非常优秀的控件,在发展成熟后被UWP官方采用成为新的基础控件。这个也是我最为推荐的附加控件来源。我认识的不少大佬都在其中做出过贡献,我在Github的第一次PR也奉献给了它。
事实上,如果你愿意深入理解UWP,看看它的源码,绝对是一次洗礼,从代码规范到设计思想的一次全方位的提升(这也是我下一阶段的目标)
至于其它由个人或公司提供的工具集,往往是针对某一具体方向,比如前面提到的Telerik
,它所提供的图表控件是非常厉害的。但这些工具集有一个弊端,即时效性和技术支持方面有着天然的缺陷。你不用太指望使用这些控件出了问题有人会提供解决方案(这些技术支持往往不是免费的),同时你也不用太指望这些控件能够紧随UWP更新的步伐进行迭代。对于这些控件,我的态度是有需要就用,只不过大多数情况下用不上就是了。
如何了解控件的功能及实际表现
对于控件的解释,往往是口述千遍不如手过一遍。如果能让你实际体验一下这些控件,再辅以示例说明,那么效果往往是事半功倍。
但凡控件集,大多都会提供应用来向开发者展示其实际效果,这些应用都能在应用商店找到:
- XAML Controls Gallery,微软官方提供的控件展示应用,里面完整展示了控件的外观、使用说明等,属于UWP开发者人手一个的必备应用。
- Windows Community Toolkit Sample App,Windows Community Toolkit提供的控件展示应用,内容丰富,几乎包括UWP开发的各个方向(但并不意味着你要的全都有)
以上提供的仅仅是必备应用,如果你需要更多的可选控件,不妨多逛逛Github。
如何踩控件的坑
控件并不是完美无瑕的,这一点我们都知道。但除了控件本身的BUG之外,我们所说的坑
,更多的是指控件的功能无法满足我们的实际需要,为了达成我们的目标,需要对控件本身进行魔改,或者借助其它控件的组合来实现。这个过程,被称之为踩坑
。
就比如在 Windows 10 1809之前,我如果想给按钮添加圆角其实是非常麻烦的,因为在1809之前,按钮并没有CornerRadius
属性,为了实现这一简单的目标,我先尝试在Button
中添加子元素,借助其它具有CornerRadius
属性的控件生生写一个圆角矩形出来,并将Button
本身背景色设置为透明。但后来发现,通过这种方式做状态改变(比如鼠标移入、点击等)的动画非常麻烦。于是就借助ControlTemplate直接修改Button的VisualTree,才算比较优雅地解决了这个问题。
这样一段历程就是所谓的踩坑
了。通过这段经历你可以发现,控件本身是提供了一定的空间让你得以修改的,但是并没有人告诉你这样做合不合适,想要实现需求,就必须自己动脑考虑解决方法——即如何使用现有控件达成目标。
在修改按钮圆角的例子里,功能需求相对简单基础,如果你也遇到了相似情况,还可以通过搜索引擎查找。但一些更为复杂的需求,甚至是仅适用于你所做软件的需求,别说找了,你都不知道该怎么描述你遇到的问题,这个时候就是考验你的本领的时候了。
随着你不断地踩坑,最后积累下来的,就是经验或者说解决问题的思路。这种经验是非常宝贵的,借由此,逆推可知,踩坑是必须要经历的。没有让人痛并快乐着的踩坑
,你对UWP应用的理解也永远会停留在入门阶段。
小结
本章主要目的在于引导你自主学习控件的知识。UWP的现状相信你也有所了解,并不是很热门的应用开发平台,所以在资料方面会相对匮乏,这种情况下学习UWP开发,除了爱之外,自学能力也是必不可少的一环。
再次建议,有能力的同学尽量翻墙使用Google查找问题,碰上解决不了的困难就去StackOverflow,这会节省你大量的时间。