1. xmlns 在xml中专门用于声明名字控件,
    • xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 是WPF的核心名字空间,它包含所有WPF类,包括用于构建用户界面的控件
    • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 是XAML名字空间,包含各种XAML实用特性,之后会有x:Class ,x:Name等 ,x就表示这个命名空
  2. XAML名字空间中的Class 告诉XAML编译器生成一个新Applicaion类(Partial类)用于事件处理,我们可以提供Class的Partial类的其他实现,x名字空间的主要内容如下:
    • attribute类:
      x:Class:告诉窗口编译成类,如上
      x:ClassModifier:编译成的类的访问权限,public,internal,private等
      x:Name:编译成类的属性
      x:FieldModifier:修饰属性的访问权限
      x:key:用于检索资源的key
      x:Shared:声明资源是否共享,与x:key配合使用
    • 标记扩展类:
      x:Array :数组标签类型
      x:Static:表示静态成员
      x:Type:表示类型
      x:nul:
  3. WPF Xaml的标记扩展常用的包括:StaticResource,DynamicResource,TemplateBinding等,完整的参考:http://msdn.microsoft.com/zh-cn/library/ms747180(v=vs.110).aspx.要注意WPF xaml的标记扩展与上面xaml本身自带的标记扩展X:Static等的区别
  4. InitializeComponent():由编译器自动生成,功能是调用System.Windows.Application类的LoadComponent()方法从程序集中提取BAML(编译过的XAML),并使用它构建用户界面
  5. 在代码中要操作控件,则控件必须包含XAML Name属性,这样XAML编译器会自动生成以Name命名的对象,前提是使用RuntimeNameProperty标签修饰了类,由于FramworkElement类使用了RuntimeNameProperty修饰了所以继承自它的控件都可以这样使用
  6. 复杂属性的设置,以设置Grid的Background为例,如果想使用其他画刷设置Background,可以通过如下方式添加其他标签来实例化特定的类
            <Grid Name="grid1"> 
            <Grid.Background>
            <LinearGradientBrush>    
            </LinearGradienBrush>
            </Grid.Background>
            </Grid>
  7. 标记扩展:可以使属性值绑定到一个动态变化的量,所有标记扩展类都继承自System.Windows.Markup.MarkupExtension基类,例如:
           <Button ... Foreground>="{x:Static SystemColors.ActiveCaptionBrush}">,
    与button.Foreground=SysemColors.ActiveCaptionBrush 作用相同,其中Static是StaticExtension类的缩写,在引用扩展类时可以省略Extension
    • x:Type 为变量提供Type对象, 即等号左边是Type类型
    • x:Static 生成静态值
    • x:Null 将null指定为属性的值
  8. 附加属性,通常用于控件布局
  9. Xaml让父元素决定如何处理嵌套的子元素,算法如下:
    • 父元素继承自IList,则解析器调用IList.Add 添加子元素
    • 父元素继承自IDictionary,则解析器调用IDictionary.Add方法添加子元素,当使用字典集合时,还必须设置x:Key特性为每个item指定一个键名
    • 父元素使用了ContentProperty特性进行修饰,则解析器使用Children.Add 添加子元素
  10. Xaml中引用其他名字空间:
    xmlns:prefix="clr-namespace:Namespace;assembly=AssemblyName"
    prefix是名字空间的简称,例如x是xmla名字空间的简称,可以在xmla中使用
  11. Xaml可以不随项目一起编译,项目中可以XamlReader读取xaml, 并用LogicalTreeHelper.FindLogicalNode或者FrameWorkElement.FindName方法获取对象

WPF XAML的更多相关文章

  1. WPF XAML之bing使用StringFormat

    WPF XAML之bing使用StringFormat // 转化为百分比 Text="{Binding Progress, StringFormat=\{0:P\}}" < ...

  2. [WPF,XAML] 跳动的心

    原文:[WPF,XAML] 跳动的心 没什么艺术细胞,原谅,原谅! <Canvas Width="0" Height="0"> <Canvas ...

  3. 使用MVVM DataTemplate在WPF XAML视图之间切换

    原文 使用MVVM DataTemplate在WPF XAML视图之间切换 更新:这个技术的改进版本,一个不创建视图,可以在以下链接找到: http://www.technical-recipes.c ...

  4. 使用MVVM DataTriggers在WPF XAML视图之间切换/Window窗口自适应内容大小并居中

    原文 使用MVVM DataTriggers在WPF XAML视图之间切换 相关文章: http://www.technical-recipes.com/2016/switching-between- ...

  5. 标记扩展和 WPF XAML

      本主题介绍 XAML 的标记扩展概念,包括其语法规则.用途以及底层的类对象模型. 标记扩展是 XAML 语言以及 XAML 服务的 .NET 实现的常规功能. 本主题专门详细论述了用于 WPF X ...

  6. WPF - XAML如何引入名字空间

    WPF 的XAML引入名字空间的概念,经常容易让人混淆.如何引入名字空间,并且在XAML中调用其中的类,下面给一个简单的介绍. 比如我们有一个Hepler类. namespace Wheat.PIMS ...

  7. WPF XAML 资源样式模板属性存放位置

    WPF的XAML 资源申明 类似HTML. 整体来说分3种1.行类资源样式属性 1.1 行内属性 <Button Content="按钮" Foreground=" ...

  8. XAML属性赋值转换之谜(WPF XAML语法解密)

    XAML与XML类似,就是XML延伸过来的.为了更好的表达一些功能,WPF对XML做了扩展,有些功能是WPF在后台悄悄的替你做了.有时候,虽然实现了某个功能,但是对实现原理还是很茫然.今天就讲讲XAM ...

  9. wpf.xaml.behavior

    Install-Package Microsoft.Xaml.Behaviors.Wpf Remove reference to “Microsoft.Expression.Interactions” ...

随机推荐

  1. [jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)

    题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 ...

  2. 什么是jquery中的事件委派?

    在jquery中有一个很重要的概念——事件委派,相信很多搞前端开发的人都听说过,零度逍遥本来对此不是十分理解,但经过一个高人的指点后,才发现这个功能还是蛮强大的,今天就给大家分享一下. 事件委派的定义 ...

  3. vue中采用axios发送请求及拦截器

    这几天在使用vue中axios发送get请求的时候很顺手,但是在发送post请求的时候老是在成功的回调函数里边返回参数不存在,当时就纳闷了,经过查阅资料,终于得到了解决方案,在此做一总结: 首先我们在 ...

  4. PhotoZoom的工具栏 图片放大不失真

    使用PhotoZoom能够对数码图片无损放大,备受设计师和业内人员的青睐,它的出现时一场技术的革新,新颖的技术,简单的界面,优化的算法,使得它可以对图片进行放大而没有锯齿,不会失真.本文为您一起来认识 ...

  5. VMware虚拟机共享文件夹

    安装好虚拟文件夹后,第二次开机时发现/mnt/hgfs目录下找不到共享的文件夹,原因是vmfg-fuse服务没有开启. 在root的配置文件中添加如下代码,设置开机自启: /usr/bin/vmhgf ...

  6. Python多进程原理与实现

    Date: 2019-06-04 Author: Sun 1 进程的基本概念 什么是进程? ​ 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成.我们编写 ...

  7. UVALive-8077 Brick Walls 找规律

    题目链接:https://cn.vjudge.net/problem/UVALive-8077 题意 有一个用砖头磊起来的墙,现在又有一只蚂蚁,想沿着砖缝从起点跑到终点. 问最短路长度. 思路 找规律 ...

  8. V4L2驱动程序架构

    1 V4L2简介 video4linux2(V4L2)是Linux内核中关于视频设备的内核驱动,它为Linux中视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的Video设备节点路径通常 ...

  9. CMDB设计

    CMDB(资产管理数据库) CMDB是所有运维工具的数据基础 CMDB包含的内容 用户管理,记录测试,开发,运维人员的用户表 业务线管理,需要记录业务的详情 项目管理,指定此项目用属于哪条业务线,以及 ...

  10. 2015 Multi-University Training Contest 3 hdu 5324 Boring Class

    Boring Class Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...