UWP学习之路-Know your weapons(五个XAML控件)
您好,您的没做过几个菜却讲厨师做的菜不好吃,没实现过控件却给控件挑毛病的程序员上线了。
见闻较少,如果有说的片面或者考虑不周的地方请指正,谢谢。
1.combobox
ComboBox是一个下拉选择框,实现了下拉选择的功能.这个功能很实用也很方便,比如男女选项等等.不过,ComboBox不太适合大规模选项的选择.一是它本身没有搜索框,如果可选项过多(比如国家,字体),就会造成要选择很久的情况.二是这位所描述的过多的Item会造成列表重复无限循环(这点虽然仍有不足但是可解决).而B站上这位同学也提及了如果选项较多,建议使用ListPickerFlyout控件.然而:
官网上给出的答案是
那么现在我们知道了,Flyout或者MenuFlyout可以解决这个问题了, 等等,如果Flyout和MenuFlyout足可以实现这个功能, ComboBox是用来干嘛的呢? (我现在是觉得可能ComboBox 的UI更好看)
哦对了,还有,当你选定了一个项目
然后决定我还是不选颜色了吧,请让我回到pick a color吧.
对不起,我们回不到过去了:
2. Inkcanvas
InkCanvas就是一个画布,刚看到这个控件的时候我还是很开心的,本人画作大师的天赋终于可以显示一下了,尤其当我发现这个画布是支持触屏的时候我就更开心了。虽然我发现这个画笔只支持四个颜色的时候,有一点点失望,但还可以。
我很快随便画了个图出来,然后发现了一个问题,为什么只能清空整个画布?橡皮擦呢?好歹来一个画白色线假装一下也可以啊?按住鼠标右键划过线条也没什么作用.
我:……
不过更加神奇的事情发生了,我不抱希望的用我的触控笔尾部蹭了一下,擦掉了:
是的,它,有这个功能,但是没有不是触控屏没有触控笔的电脑,是无法完成这个操作的.这是微软对非surface玩家的歧视吗?
3.ViewBox
Viewbox 是一个可以将其中内容缩放到自身大小的容器,用不同的方式来填充容器,以达到适应不同屏幕的需要,从而不会导致图片在不同屏幕上产生过大过小的问题。
这个实现的功能是非常实用的,还提供了多种填充的方式。然而,当我看到对UniformToFill这个填充模式的描述时: 在保留内容原有纵横比的同时调整内容的大小,以填充目标尺寸。 如果目标矩形的纵横比不同于源矩形的纵横比,则对源内容进行剪裁以适合目标尺寸。这意味着,如果我的图片的尺寸和屏幕不太合拍,就会出现下面这种尴尬的情况:
欸这位朋友,你的右半部分呢?且不说可能会出现的半个按钮这种神奇的操作,我的哪位用户希望看到一半的图片呢?虽然如果使用ScrollBar倒是可以以拉条的方式去看整个图片,但是的,这个控件也没了,官网还没有给我一个替代的方法.所以如果我的图片的确有可能会存在尺寸不匹配的情况,那么我和我最后的倔强就只能是抱住fill和both紧紧不放了,毕竟:
真希望ViewBox能接纳下ScrollBar的灵魂,再多一个选项,当尺寸不匹配的时候,就展示成可以拉进度条的样子.
4.Colorpicker
Colorpicker是一个很常用的控件了,基本在正规一些的画图软件或者图片编辑软件中都会有(你看你自己有这么好的控件怎么舍不得给InkCanvas用一下!)。这个控件还实现了一个功能就是当你用鼠标拖动滑块时,它会自动在上面给你悬浮一个当前颜色的名字:
看,是不是很好?!一看就有种自己用了很高级颜色的感觉,然而,当我的鼠标在别的地方点击了一下之后,这个名字,它就不见了…
再之后,无论我多么努力把鼠标悬停在滑块上时,能看见颜色名字的日子也一去不复返了,而我唯一能再次看见这个名字的方法,就是移动滑块,这听起来毫无问题,移动了,我的名字也回来了,然而,我刚刚选好的颜色呢?哦。
5. slider
Slider可以让用户通过滑动轨道上的控件来从一系列值中进行选择。只是,这个数值只能通过滑动滑块来达到,而不能直接点击旁边的数字再进行数字的输入。当我一心想要个50出来的时候,就会出现下面的情况:
???再向右一点!
……
解决这个问题,就把TextBlock改为TextBox,再设定TextBox的值可以改变滑块位置应该就可以了,不过我不自量力的点进GitHub,发现自己连人家是怎么通过在不同滑块位置得到不同数值都没看懂…对不起再给我五分钟我一定可以靠自己双手把滑块拉到50的!