作为一个刚刚接触C#和XAML的新手,首先就是要搞清楚这二者之间的关系。XAML的中文名称为可扩展应用程序标记语言,而C#则是运行于.NET Framework之上的高级程序设计语言,可以理解为使用XAML制作UWP的用户使用界面,而使用C#来完成内部的逻辑实现。简单类比QT应该就是.ui文件和.cpp文件区别。可视化程序设计我只接触过QT,对于网站设计并不了解,所以对于XAML这种类似于HTML的标记语言不熟,还需要加紧学习。
在看完大部分XAML控件后,和我之前接触的QT进行对比,我发现大部分的特性都很类似,比如说在设计时界面与内部实现分开,所见即所得等。但对于XAML我发现了很多有趣的地方。
首先就是最令我感到奇怪的一点,就是我没有找到UWP在电脑端对鼠标图标的改变,例如在QT中,我们可以通过设置这样一个属性
来使得鼠标在移向该按钮后变为手指标识,但在UWP中我没有看到按钮有这样的属性,在我使用的网易云音乐中鼠标也没有变化,一直是处于箭头状态,所以很多时候都不清楚一些按钮能否点击。我猜测是因为其跨平台的特性,在移动端以及穿戴式设备上不需要这方面的功能。但我觉得对于已经养成习惯的计算机用户来说,是有些不习惯的。
其次就是MediaElement&MediaPlayerElement这两个控件,看介绍是说一个旧一个新,但MediaPlayerElement有什么新的特性我并没有找到,也并不清楚是从头实现了一个新类还是只是将原来的MediaElement改了名字,不过相信微软这么做一定是有一些道理的。
但这个控件本身功能是非常强大的,播放器的基本操作都包含了进去,在QT中如果实现一个差不多功能的控件需要的代码量会很大,而在UWP中仅仅需要一行代码就可以新建一个播放器。这一点是其他可视化编程平台做不到的,但这也引起了一些问题,比如说在QT中我可以定制出一个和其他所有人都不同的个性播放器,而UWP中不知道是否有方法将MediaPlayerElement进行修改,在接下来的学习中我会仔细考虑这个事情。
对于ParallaxView,我第一感觉就是炫酷,相当于直接将图片设置为按钮的背景,同时在用户下滑时还会自动显示图片剩余部分,整个界面瞬间变得高大上了起来,如果有好看的界面相信很多人会摒弃原来单调的背景。
然后是pivot这个东西,这个东西很类似QT中存放控件的QStackedLayout,可以存放很多其他控件,根据用户的需求显示不同的界面。原来我认为这个是必须显示title的
然而在亲自实现后才发现如果不设置title和header时,默认是和QStackedLayout一样没有任何显示的。
最后是XAML的一些全新的控件:
RatingControl:
这个控件感觉就是官方钦定了一种给软件或产品打分的方式,为程序员节省了自己编写打分程序的时间,并且比使用数字框更加直观。相信在程序员自己定义打分的图形后,比如说把新型换成笑脸等等会使打分功能更加个性化。
RepeatButton:
看起来和普通按钮类似,但点击鼠标后只要不松开就一直会触发某种事件,和QT中重写了MouseRelease的Button很像。不过有一点不同的是当鼠标按住并拖动到按钮外时,计数就会停止,这意味着这个按钮不仅监控鼠标按下松开事件,并且还监控了鼠标的位置。
InkCanvas:
一个功能十分简单,代码也十分简单的内置画图工具,对于一些需要手写文字或简单画图的场合十分适用。但因为功能太简单,暂时也不清楚拓展性如何,所以对于windows自带的画图工具来说还是有些差距。
以上是我比较感兴趣的控件,感觉UWP整体上非常适合在PC端编写windows应用,并且听说UWP的程序可以直接在其他平台上如windows phone等直接运行,不必过多考虑兼容性的问题,相信这也是C#语言崛起的一大原因吧。