zoukankan      html  css  js  c++  java
  • WPF第一个程序和XAML初探

     一、WPF中为什么要用XAML?

            XAML的优点,可以参考下面的文章:http://www.cnblogs.com/free722/archive/2011/11/06/2238073.html,具体的体现还会在以后的章节中说明。

    二、第一个WPF程序

    2.1新建->项目->WPF应用程序:如图1

          

    图1

    图2

    2.2在工具栏拖一个按钮Button,如图2所示,双击,后台代码如下

    public partial class MainWindow : Window
    
        {
    
            public MainWindow()
    
            {
    
                InitializeComponent();
    
            }
    
             private void button1_Click(object sender, RoutedEventArgs e)
    
            {
    
                MessageBox.Show("Hello WPF!");
    
            }
    
        }

    2.3最后按F5,ok,一个Hello WPF就出现了

    三、剖析最简单的XMAL代码

    3.1新建一个窗口

      对应的XAML代码为下面的代码:

    <Window x:Class="Chap_01_XAML.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    
            Title="Window1" Height="300" Width="300">
    
        <Grid>
    
        </Grid>
    
    </Window>

    3.2剖析Attribute和Property

      如果要剖析上述代码的话,要从Attribute和Property说起,接触过web的话知道Attitubute是DOM的特征,在这里差不多,Attribute是xaml的特征,Property是从面向对象的角度的属性,是属于一个对象的的属性。其实还是有些联系的,那就是一个C#后台的对象的属性Property和XAML的Attribute是有映射关系的,不过一般情况下,是多个Attribute对应一个Property。

    3.3正题

      现在进入正题,上面的代码可以简化成:

    <Window>
    
        <Grid>
    
        </Grid>
    
    </Window>

      在这里Grid是Windows的一个属性,attribute和Property一对一的映射。接下来看一下xmlns

      x:Class="Chap_01_XAML.Window1"
    
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    
            xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

      其中xmlns为xaml文件的命名空间,http://schemas.microsoft.com/winfx/2006/xaml/presentation对应了.NET里多个命名空间:

    . System.Windows
    . System.Windows.Automation
    . System.Windows.Controls
    . System.Windows.Controls.Primitives
    . System.Windows.Data
    . System.Windows.Documents
    . System.Windows.Forms.Integration
    . System.Windows.Ink
    . System.Windows.Input
    . System.Windows.Media
    . System.Windows.Media.Animation
    . System.Windows.Media.Effects
    . System.Windows.Media.Imaging
    . System.Windows.Media.Media3D
    . System.Windows.Media.TextFormatting
    . System.Windows.Navigation
    . System.Windows.Shapes

           http://schemas.microsoft.com/winfx/2006/xaml对应了一些与XAML的语法和编译相关的CLR名称空间。由于“xmlns:x”的缘故,如果使用这些命名空间里面的类型的话要加上x:当然x可以是其他的字母或单词(通常是不改名的,后面的章节会讲到x),为什么上面一个的没有加呢,那是因为,每个xaml文件里面都允许一个默认的命名空间,这个命名空间经常调用,如果不经常调用的话,我们去默认,那我们经常调用的话就要加“别名”,自己就给自己带来了麻烦,所以我们把经常最经常用的默认,其实我们保存默认状态就好了。

    3.4后台代码中的对象和前台对象怎么映射

           主要是通过http://schemas.microsoft.com/winfx/2006/xaml和后台代码的partial关键词。partial使同一个类可以多出定义,最终相同名字的类通过编译合并成一个类。我们可以通过反vs下面的这个工具(如图3所示)查看bin目录下生成的.exe文件(不是这个.vshost.exe),如图4所示:

    图3

    图4

    发现了只有一个window1这个类,如果在.cs文件里面在加一个下面的代码(即使说这段代码没有什么用处,这里只是用来说明partial的作用),生成的文件里面会有如图5的一个变量,

    去掉下面的代码的如图6,发现没有了btn这个变量。

        public partial class Window1 : Window
    
        {
    
            private Button btn;
    
        }

    图5

     

      图6

    四、总结

      本文主要粗略的说明了一下WPF和XAML,让我对WPF和XAML有了初步的认识,如果有不足的地方,请大牛们指点。下一篇:x名称空间详解

  • 相关阅读:
    前端笔记之JavaScript(六)让人头疼的正则表达式
    前端笔记之JavaScript(五)关于数组和字符串那点事
    前端笔记之JavaScript(四)关于函数、作用域、闭包那点事
    前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事
    前端笔记之JavaScript(二)关于运算符&初识条件判断语句
    前端笔记之CSS(下)浮动&BFC&定位&Hack
    前端笔记之CSS(上)语法&文本属性&块/行内元素&选择器&盒模型
    artTemplate--使用artTemplate时,由于json对象属性有数字命名格式 导致调用报错 syntax error
    多线程--做单元测试时,使用线程池发现并没有运行指定代码,直接跳过
    JSP-导入taglib 出现classNotFound异常
  • 原文地址:https://www.cnblogs.com/lzhp/p/WPF.html
Copyright © 2011-2022 走看看