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. 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签

    今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...

  2. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  3. .NET面试题集锦①(Part一)

    一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征: 继承.封装.多态.特点:代码好维护,安 ...

  4. spring的BeanFactory加载过程

    ApplicationContext spring = new ClassPathXmlApplicationContext("classpath*:spring/applicationCo ...

  5. 初识的Spring Mvc-----原理

    一.Spring Mvc简介 Spring Mvc(Spring Web Mvc) 属于表现层的框架. 二.Spring结构图 Spring Mvc是Spring框架里面web模块的一部分,是在Spr ...

  6. VS2015 Git 源码管理工具简单入门

    1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Meger) 获取 ...

  7. (转)从0开始搭建SQL Server AlwaysOn 第一篇(配置域控+域用户DCADMIN)

    原文地址: http://www.cnblogs.com/lyhabc/p/4678330.html 实验环境: 准备工作 软件准备 (1) SQL Server 2012 (2) Windows S ...

  8. MySQL 优化之 ICP (index condition pushdown:索引条件下推)

    ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...

  9. PHP相关代码

    1 <html>  <head>       <meta http-equiv="content-type" content="text/h ...

  10. 【腾讯Bugly干货分享】微信iOS SQLite源码优化实践

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b58022433221be01499480 作者:张三华 前言 随着微信iO ...