欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

可视化程序设计基础(一)——XAML控件

程序员文章站 2022-04-04 23:09:13
作为一个刚刚接触C#和XAML的新手,首先就是要搞清楚这二者之间的关系。XAML的中文名称为可扩展应用程序标记语言,而C#则是运行于.NET Framework之上的高级程序设计语言,可以理解为使用XAML制作UWP的用户使用界面,而使用C#来完成内部的逻辑实现。 简单类比QT应该就是.ui文件和. ......

作为一个刚刚接触C#和XAML的新手,首先就是要搞清楚这二者之间的关系。XAML的中文名称为可扩展应用程序标记语言,而C#则是运行于.NET Framework之上的高级程序设计语言,可以理解为使用XAML制作UWP的用户使用界面,而使用C#来完成内部的逻辑实现。

简单类比QT应该就是.ui文件和.cpp文件区别。可视化程序设计我只接触过QT,对于网站设计并不了解,所以对于XAML这种类似于HTML的标记语言不熟,还需要加紧学习。

在看完大部分XAML控件后,和我之前接触的QT进行对比,我发现大部分的特性都很类似,比如说在设计时界面与内部实现分开,所见即所得等。但对于XAML我发现了很多有趣的地方。


 

首先就是最令我感到奇怪的一点,就是我没有找到UWP在电脑端对鼠标图标的改变,例如在QT中,我们可以通过设置这样一个属性

可视化程序设计基础(一)——XAML控件

来使得鼠标在移向该按钮后变为手指标识,但在UWP中我没有看到按钮有这样的属性,在我使用的网易云音乐中鼠标也没有变化,一直是处于箭头状态,所以很多时候都不清楚一些按钮能否点击。我猜测是因为其跨平台的特性,在移动端以及穿戴式设备上不需要这方面的功能。但我觉得对于已经养成习惯的计算机用户来说,是有些不习惯的。


其次就是MediaElement & MediaPlayerElement这两个控件,看介绍是说一个旧一个新,但MediaPlayerElement有什么新的特性我并没有找到,也并不清楚是从头实现了一个新类还是只是将原来的MediaElement改了名字,不过相信微软这么做一定是有一些道理的。

可视化程序设计基础(一)——XAML控件

 

但这个控件本身功能是非常强大的,播放器的基本操作都包含了进去,在QT中如果实现一个差不多功能的控件需要的代码量会很大,而在UWP中仅仅需要一行代码就可以新建一个播放器。这一点是其他可视化编程平台做不到的,但这也引起了一些问题,比如说在QT中我可以定制出一个和其他所有人都不同的个性播放器,而UWP中不知道是否有方法将MediaPlayerElement进行修改,在接下来的学习中我会仔细考虑这个事情。

 


 

对于ParallaxView,我第一感觉就是炫酷,相当于直接将图片设置为按钮的背景,同时在用户下滑时还会自动显示图片剩余部分,整个界面瞬间变得高大上了起来,如果有好看的界面相信很多人会摒弃原来单调的背景。

可视化程序设计基础(一)——XAML控件

 


然后是pivot这个东西,这个东西很类似QT中存放控件的QStackedLayout,可以存放很多其他控件,根据用户的需求显示不同的界面。原来我认为这个是必须显示title的可视化程序设计基础(一)——XAML控件

 

然而在亲自实现后才发现如果不设置title和header时,默认是和QStackedLayout一样没有任何显示的。

可视化程序设计基础(一)——XAML控件


 

最后是XAML的一些全新的控件:

RatingControl:可视化程序设计基础(一)——XAML控件

这个控件感觉就是官方钦定了一种给软件或产品打分的方式,为程序员节省了自己编写打分程序的时间,并且比使用数字框更加直观。相信在程序员自己定义打分的图形后,比如说把新型换成笑脸等等会使打分功能更加个性化。

RepeatButton:可视化程序设计基础(一)——XAML控件

看起来和普通按钮类似,但点击鼠标后只要不松开就一直会触发某种事件,和QT中重写了MouseRelease的Button很像。不过有一点不同的是当鼠标按住并拖动到按钮外时,计数就会停止,这意味着这个按钮不仅监控鼠标按下松开事件,并且还监控了鼠标的位置。

InkCanvas:可视化程序设计基础(一)——XAML控件

一个功能十分简单,代码也十分简单的内置画图工具,对于一些需要手写文字或简单画图的场合十分适用。但因为功能太简单,暂时也不清楚拓展性如何,所以对于windows自带的画图工具来说还是有些差距。


以上是我比较感兴趣的控件,感觉UWP整体上非常适合在PC端编写windows应用,并且听说UWP的程序可以直接在其他平台上如windows phone等直接运行,不必过多考虑兼容性的问题,相信这也是C#语言崛起的一大原因吧。