zoukankan      html  css  js  c++  java
  • 剖析XAML语言

      这节剖析一下XAML(读作:zaml)——这一WPF中的UI设计语言。

    XAML

        在wpf中,UI部分使用xaml语言来编写,xaml语言是由xml语言派生而来的语言,所以在xaml中我们可以看到很多熟悉的特点:它也是使用标签构建页面,一个标签就对应一个对象,标签与标签之间或为并列关系,或为包含关系。

        标签分为非空标签和空标签,非空标签是指标签中可以包含子标签,空标签则不能包含任何子标签,它们的样子如下:

        非空标签:<tag>[<childtag...>]</tag>

        空标签:<tag/>

        每一个标签都有其特性,比如我们可以为window标签设置title,width特性,为Grid标签设置Background特性等等,也可以为标签事件设置事件处理器(标签事件被触发时要执行的方法),详情如下图:

        我为window标签设置了title为“XAML语言”,及其宽高,还为其设置了Loaded事件(当window被加载的时候触发)的事件处理器。

    xmlns

        在C#中有命名空间的概念,我们可以使用using引入,就可以使用其中的类,在xaml中,也同样有命名空间,在window标签中用xmlns声明的这几行,这就是本页面引入的命名空间。

        一般的情况下,我们引入命名空间,都是为了使用其中的控件,或者使用一些类型转换器(TypeConverter,后续章节会讲)等工具类,所以为了区分我们使用的是哪个命名空间下的控件或类,我们必须要在引入命名空间的同时,指定它在本页面的别名,也就是xmlns冒号后的值,如上图中的“x”,“d”,"mc"等,我们使用的时候也要在标签前加上名字:<x:tag/>。

        另外,我们看到上图中引入的命名空间是一个个http链接,但这并不是去访问了某个地址,而是xaml中的硬编码,当系统遇到这样的链接,就会去引用一堆命名空间,用一行引用代替了多行引用。再一个,一个页面可以有一个默认命名空间,也就是xmlns后没有别名,当我们使用的控件没有标明使用哪个命名空间时,系统会自动去默认命名空间中寻找,就像window,grid这样的控件,是由xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"都在这一行引入的命名空间中。

        我们新建一个界面,命名空间默认就是以上这样的几行,但其实它引入了很多,单单http://schemas.microsoft.com/winfx/2006/xaml/presentation这一个声明就会引入如下一堆命名空间:

        所以我们基本上不需要考虑引入哪些基本命名空间,微软已经帮我们做好了 。

    编译

        当我们运行时,系统会编译xaml代码,会将xaml编译为一个partial 类,类名就是window 标签第一行用x:Class指定的名称,也就是会跟我们的后台类合并,这一点还是跟WinForm一样的。

        后台代码中的InitializeComponent()方法就是编译xaml后的部分类给的,作用是去初始化控件。

    本节到此结束,我的公众号:DotNet 致知

  • 相关阅读:
    Windows上安装配置SSH教程(3)——在Windows系统上安装与配置WinSCP
    Windows上安装配置SSH教程(2)——在Windows XP和Windows 10上安装并配置OpenSSH for Windows
    Windows上安装配置SSH教程(1)——知识点汇总
    Windows上安装配置SSH教程(5)——win10下使用Cygwin+Expect自动登陆ssh
    Win10安装cygwin并添加apt-cyg
    Windows上安装配置SSH教程(4)——WinSCP+OpenSSH 使用公钥自动登陆
    地线干扰与抑制(转)
    AMBA总线协议AHB、APB
    springcloud(六):配置中心git示例
    springcloud(四):熔断器Hystrix
  • 原文地址:https://www.cnblogs.com/charlesmvp/p/14770769.html
Copyright © 2011-2022 走看看