XAML是WPF技术中专门用于设计UI的语言

XAML优点最大的优点是将UI与逻辑代码剥离

创建第一个WPF应用程序

VS默认生成的WPF项目解决方案

  • Properties:里面主要包含了程序用到的一些资源和配置
  • App.xaml:程序入口(Main方法就包含在该类中)
  • MainWindow.xaml:默认的主窗体

XAML代码

<Window x:Class="MyWpfApp.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:MyWpfApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>

XAML是一种继承自XML的语言,所以很多XML的概念是通用语XAML的,如使用标签声明一个元素。使用

<Tag Attribute1=Value1 Attribute2=Value2>Content</Tag><!--非空标签-->
<Tag Attribute1=Value1 Attribute2=Value2/><!--空标签-->

XML是一种声明式语言,一个标签对应了一个对象,对象之间的关系要么并列、要么是包含关系。标签内的元素相当于对象的属性。通过xmlns定义名称空间,xmlns语法

xmlns[:可选的映射前缀]="名称空间"

http://schemas.microsoft.com/winfx/2006/xaml/presentation名称空间对应的是与绘制UI相关的程序集,如System.Windows,System.Windows.Controls,System.Windows.Data,System.Windows.Media等等。http://schemas.microsoft.com/winfx/2006/xaml对应的是语言解析处理相关的程序集

通过 x:Class="MyWpfApp.MainWindow"与逻辑代码建立关联,XAML代码编译后会生成与后台代码相关联的partial类。

XAML使用树型逻辑结构来描述UI

 <Grid>
     <StackPanel>
         <TextBox></TextBox>
         <Button></Button>
     </StackPanel>
 </Grid>

初始化标签属性值

 <Rectangle x:Name="rect" Height="50" Width="100" Fill="LightBlue" ></Rectangle>

标记扩展

WPF允许将一个对象的属性值依赖在其他对象的某个属性之上。

  <StackPanel>
      <TextBox Text="{Binding ElementName=slider1,Path=Value,Mode=OneWay}"></TextBox>
      <Slider x:Name="slider1" Margin="5"></Slider>
  </StackPanel>

其实标记扩展也只是一种简写而已。只有继承了MarkupExtension的类才可以使用标记扩展语法来创建对象。

   <StackPanel>
       <TextBox>
           <TextBox.Text>
               <Binding ElementName="slider1" Path="Value"></Binding>
           </TextBox.Text>
       </TextBox>
    <Slider x:Name="slider1" Margin="5"></Slider>

通过x:Code标签转义标签

x:Code可以将后置代码(Code-Behind)嵌入到XAML代码中

 <Button Height="50" Click="Button_Click"></Button>
 <x:Code>
     <![CDATA[
         private void Button_Click(object sender, RoutedEventArgs e)
         {

         }
     ]]>
 </x:Code>

导入其他程序集语法

xmlns:映射名="clr-namespace:类库中的名称空间的名字;assimbly=类库文件名"

WPF入门:XAML的更多相关文章

  1. WPF入门:数据绑定

    上一篇我们将XAML大概做了个了解 ,这篇将继续学习WPF数据绑定的相关内容 数据源与控件的Binding Binding作为数据传送UI的通道,通过INotityPropertyChanged接口的 ...

  2. WPF入门教程系列三——Application介绍(续)

    接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...

  3. WPF入门教程系列二——Application介绍

    一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...

  4. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...

  5. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

  6. WPF:XAML概述

    简介 XAML是eXtensible Application Markup Language可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言.XAML提供了一种便于 ...

  7. WPF入门教程系列一

    WPF入门教程 一.  前言  公司项目基于WPF开发,最近项目上线有点空闲时间写一篇基于wpf的基础教材,WPF也是近期才接触,学习WPF也是在网上查资料与微软的MSDN进行学习,写本博客的目为了温 ...

  8. WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush)

    原文:WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 前面我们提到了LinearGradientBrush可以用来画渐变填充图,那么我们同时也可以使用ImageBr ...

  9. WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush)

    原文:WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush) 前面我们介绍到,Path对象表示一个用直线或者曲线连接的图形,我们可以使用Path.Data ...

随机推荐

  1. C#创建dll类库

    类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪 ...

  2. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...

  3. 利用apply()或者rest参数来实现用数组传递函数参数

    关于call()和apply()的用法,MDN文档里写的非常清晰明白,在这里就不多做记录了. https://developer.mozilla.org/zh-CN/docs/Web/JavaScri ...

  4. required

    required,这是HTML5中的一个新属性:这是HTML5中input元素中的一个属性. required译为必须的,在input元素中应用这一属性,就表示这一input元素节点是必填的或者必选的 ...

  5. iOS 小知识点(持续更新)

    1.如何通过代码设置Button  title的字体大小 设置Button.titleLabel.font = [UIFont systemFontOfSize:<#(CGFloat)#> ...

  6. 【一起学OpenFoam】02 软件准备

    "工欲善其事必先利其器",在利用OpenFoam解决我们的工程问题之前,首先要做的事情是搭建一个OpenFoam运行环境.很遗憾的是,OpenFoam的原生开发系统是Linux,因 ...

  7. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  8. Openstack Periodic Task

    Openstack Periodic Task 周期性任务在各个模块的manager.py(computer,scheduler,cell,network)中添加. 添加方法:在模块manager类实 ...

  9. JavaScript的妙与乐(一)之 函数优化

    JavaScript的妙与乐系列文章主要是展示一些JavaScript上面比较好玩一点的特性和一些有用的技巧,里面很多内容都是我曾经在项目中使用过的一些内容(当然,未必所有技巧的使用频率都很高^_^) ...

  10. [DeviceOne开发]-土地销售项目源码分享

    一.简介 这个是一个真实项目开源,虽然不是很花哨,但是中规中矩,小细节处理的也很好,非常值得参考和借鉴.里面的数据都缓存到本地,可以离线运行,但是调整一下代码,马上就可以和服务端完全对接.后续会有详细 ...