作为一个编程能力不是很好的uwp初学者,在控件库里看到种类繁多的选项时,需要查资料,最后决定出几种性能各方面可能不是那么出色的控件,内心也是非常纠结的。但当我把自己当成一个用户时,通过分析自己的需求,我认为任何一个控件的产生都不是没有道理,在某种特定的情况下,我们确实需要更加精确的控件,但是一般情况下还是以简单易操作为主,于是我选择站在“不批判但对比”的角度来说说我自己的看法,仅基于理论与个人理解。
Button&RepeatButton
之所以选出Button,并不是因为我有多么了解它,除却在英文课和可视化课程当中接触到它,我几乎很少用到这个单词,但纵观了整个控件库以后,我看到还有RepeatButton等一些“按钮”,于是我进行了资料筛查,发现了他们之间一些功能上的差异。RepeatButton:按住后会重复触发 Click 事件的按钮,Button 的 ClickMode 默认为 Release,而 RepeatButton 的 ClickMode 默认为 Press。刚开始写这个副标题时,由于查到的资料有限,我认为可以用Button代替RepeatButton,但随着资料越来越多,我个人以为他们可以用在不同的情景下,例如Button就比较适合我这种初学者来练手适应新的一门语言和登陆界面什么的需要单机的时候,但RepeatButton可能更多的可以用于大型编程,比如游戏或者网页,我在考虑一些需要鼠标单击蓄力的游戏,是不是就用到RepeatButton这种“按钮”或者思想?
TimePicker
TimePicker是一个让用户或代码来设置时间的控件,而设置的时间也只是一个static display,不会更新以显示当前时间。不仅如此,在搜索TimePicker时,我发现在MSDN上有任何我有同样的疑惑,为什么要专门设计一个用以设置静态时间显示的控件,但随之我也发现了解答,“您可以使用TimePicker让用户在您的应用中设置时间,例如设置提醒。TimePicker显示小时,分钟和上午/下午三部分。这些部件易于通过触摸或鼠标使用,并且可以通过多种不同的方式进行设计和配置”,虽然不是很懂为什么要因此设计,但我猜测,或许我们日常使用的闹钟就是运用了这个控件类似的东西?
StackPanel&Grid
我本来是没有想过要将StackPanel写进这篇随笔的,但是今天下午刚刚上完的课上,老师介绍到了这个,并和Grid一并出现,还向我们讲解了它们二者之间的可替代性,既然如此,我觉得是可以用Grid替代StackPanel的,因为对于我本人而言,我是比较倾向于Grid,它给我的感觉就是更加便于设计,虽然StackPanel的编程好像更加有规律可循(在我这种并没有什么编程基础的人看来)。
Image&ViewBox
Image这个控件,我本来凭名字猜测它是个很不错的插入图片的东西,但是仔细的体验了一下微软官方的操作(Image Stretching),类似于None,Fill等,它仿佛仅仅是一个P图软件的作用,甚至比不上,也不能说它鸡肋,因为就我的水平而言也并没有在库里找到其他能替代它的(或许MediaElement可以?)插入图片是个很实用的功能,但图片剪裁什么的,或许可以从一些专业修图的工具上汲取经验加以改善和丰富。个人还认为,Image和ViewBox在功能上重复度很高,或许可以合二为一,或者对各自进行性能提升。
ScrollViewer
虽然不太清楚别人对这个控件的定位是什么,但在我心里它不是没用,它只是简单的不好用,时常我们在翻朋友圈或者微博时都会想要看清他人发的图片的细节,只需要双击左右拖动就可以做到的事情,在ScrollViewer里却需要调许多东西来控制方向然后选择左右之类的,然后还不能到达自己想看的细节之处。刚开始,在我多次尝试各种mode后,我发现它的图片拉大拉小后所在的位置也不定(mode设定完全相同的情况下),有时缩到最小,图片会闪现在左上方,有时缩到最小,图片会出现在右上方,不太懂这是什么操作(测试十几次后觉得好像和停留的点有关,说不好,好像能把握住,又好像没什么规律)
如果从用户的角度出发,这些控件会有许多许多的缺点和不足,但是程序员开发,不仅要考虑用户需求,最重要的是产品需求,我认为XAML Controls Gallery里的大部分控件都已经非常人性化了,我提出的这些对比也可能只是因为我没有花很多的时间去使用然后写专业的感受。在日常生活使用手机和电脑的过程中,我都没有想过大部分controls都需要单独做出来,例如换头像,缓冲圈,毛玻璃效果等等。