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=类库文件名"

最新文章

  1. golang语言构造函数
  2. SQL Server 优化-执行计划
  3. 二叉树 最近祖先lca + 两个结点的最小路径
  4. linux (centos) 单机50w+链接 内核参数配置
  5. &lt;Stackoverflow&gt; 如何提问
  6. java web 简单的分页显示
  7. 《asp.net mvc3 高级编程》第四章 模型
  8. ofbiz学习笔记
  9. 使用webpack-dev-middleware 和 webpack-hot-middleware 配置一个dev-server
  10. android如何与asp.net服务端共享session
  11. ubuntu 一些琐碎知识
  12. List转换成JSON对象报错(四)
  13. hdu3966 点权模板-树链部分
  14. Assets.car 解压工具 cartool 使用报错 segmentation fault cartool 解决方案
  15. 26个ASP.NET常用性能优化方法
  16. maven 学习
  17. 【Spring】8、Spring框架中的单例Beans是线程安全的么
  18. Vue背景图打包之后访问路径错误
  19. Low-level Native Plugin Interface
  20. 菜鸟vimer成长记——第0章、我眼中的vim学习

热门文章

  1. mysql 学习总结
  2. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
  3. 在jekyll模板博客中添加网易云模块
  4. 【C#公共帮助类】 ToolsHelper帮助类
  5. .NET面试题集锦①(Part一)
  6. 自定义鼠标光标cursor
  7. Android的Kotlin秘方(II):RecyclerView 和 DiffUtil
  8. Web应用之LAMP源码环境部署
  9. Hadoop
  10. 多用多学之Java中的Set,List,Map