ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WPF 10天修炼 第二天- XAML语言

2021-02-25 10:02:55  阅读:215  来源: 互联网

标签:10 xmlns http XAML 命名 WPF MainWindow schemas


XAML是什么

  XAML是一种与.NET CLR紧密集成的声明性UI标记语言。XAML中的对象元素对应到CLR中的类型或结构。XAML命名空间对应到CLR中类的命名空间,元素类型则对应到CLR中的类型。XAML是xml的子集,因此严格遵循XML的语法规范。

 

新建一个WPF空项目,下面是默认生成的XAML结构

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <Window x:Class="WpfApplication1.MainWindow"           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"           Title="MainWindow">       <Grid>                </Grid>   </Window>

 

XAML代码组成:

1、  一个根元素<Window>和</window>标记。在XAML中,必须有且只能有一个根元素。

2、  紧接着根元素的XML命名空间的声明。在每个XAML文件中必须要具有两个命名空间。

  xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation 表示WPF命名空间,也就是XAML元素对应到CLR类的命名空间。

  xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml 表示XAML文件本身的命名空间,语法是xmlns:x,这个是x是命名的前缀可以是任意的字符。如果我们需要导入一些自定义的命名空间,那么我们就需要加上“:+自定义的形式”,这里微软导入了一个自定义的命名空间。

  使用其它命名空间的类型语法:

  xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName"

  Prefix:用户指定希望在XAML文档中使用的命名空间的前缀,类似于XAML命名空间使用的x:前缀,可以指定任意的字符串。

  Namespace:是完整的.net命名空间名

  AssemblyName:程序集名称,不用指定.DLL扩展名。这个程序集必须被当前的WPF项目所引用。

3、下面是<Grid>标记,代表XAML文件的UI内容。

  

代码后置文件

         使用项目模板创建一个窗体或页面时,VS会自动生成一个相应XAML文件扩展名在再加上.cs的代码后置文件。XMLA中通过使用x:class 语法关联到一个特定的后置类。

X:Class后置类指定为WpfApplication1.MainWindow,可以打开后置代码文件,看到一个名为WpfApplication1的命名空间,有一个MainWindow的类。X:class告诉XAML解析器,使用指定的名称来产生一个新的类,这个类派生自XAML跟元素类。因此在代码后置文件中可以看到MainWindow类继承自Window类。代码如下:

 namespace WpfApplication1

{

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

        }

    }

}

 

特定的字符和空白

XAML严格遵循XML语法规范,在XML中,对特定的字符,比如& < > 等需要进行特殊处理,所以在XAML中也需要使用特定的代码来替换这些字符。

小于符号<:&lt;    <Button Content="小于号:&lt;"></Button>

大于符号>:&gl    <Button Content="大于号:&gt;"></Button>

And符合&:&amp;  <Button Content="And符号:&amp;"></Button>

引号””:&quot;     <Button Content="引号:&quot;"></Button>

 

在XAML中使用事件 

XAML代码中事件的声明通常使用事件名=”事件处理方法名”,并且在后置代码中对指定的方法提供声明和实现。

XAML代码

<Window x:Class="WPFDemo.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:WPFDemo"

        mc:Ignorable="d"

        Title="MainWindow" Height="350" Width="525">

    <StackPanel >

        <!---定义按钮样式-->

        <StackPanel.Resources>

            <Style TargetType="{x:Type Button}">

                <Setter Property="Height" Value="50"></Setter>

                <Setter Property="Width" Value="200"></Setter>

                <Setter Property="HorizontalAlignment" Value="Left"></Setter>

            </Style>

        </StackPanel.Resources>

        <Button Content="点击我试试" Name="button1" Click="button1_Click"></Button>

</StackPanel>

</Window>

 

后置代码:

private void button1_Click(object sender, RoutedEventArgs e)

 {

  MessageBox.Show("我是单击事件");

}

标签:10,xmlns,http,XAML,命名,WPF,MainWindow,schemas
来源: https://www.cnblogs.com/HarryK4952/p/14445295.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有