1. RuntimeNameProperty特性:为什么<Grid x:Name="grid1"></Grid>等价于<Grid Name="grid1"></Grid>,是因为Grid类使用RuntimeNameProperty特性进行了修饰,  RuntimeNameProperty特性指示哪个属性的值将被做为该类型的实例的名称。
  2. WPF的类型转换器:XAML解析器通过以下的两个方法查找类型转换器,如果找不到,XAML解析器就会生成一个错误。
    1)  检查属性申明,查找TypeConverter特性,如果提供了TypeConverter特性,该特性将指定哪个类可以执行转换。
    2)  如果属性申明中没有TypeConverter特性,XAML解析器将检查对应数据类型的类申明。
  3. XAML是大小写敏感的,所以不能使用<button>代替<Button>,但类型转换器通过不是大小写敏感的,这意味着 Foreground="White" 和 "Foreground="white"具有相同的效果。
  4. 标记扩展:所有标记扩展都继承自System.Windows.Markup.MarkupExtension基类,它提供了一个简单的ProvideValue()方法,该方法获取所期望的数值。StaticExtension标记扩展,它允许引用另一个类中的静态属性:<Button Foreground="{x:Static SystemColors.ActiveCaptionBrush}">
    因为标记扩展映射为类,所以它们也可以被用作嵌套属性,如:
    <Button>
    <Button.Foreground>
    <x:Static Member="SystemColors.ActiveCaptionBrush"></x:Static>
    </Button.Foreground>
    </Button>

    NullExtension:它代表一个null值。

    TypeExtension:该扩展构造一个表示.Net类型的对象。

  5. 附加属性:它是可以用在多个控件但是在另一个类中定义的属性。它根本不是一个真正的属性,它们实际上被转换为方法调用,XAML解析器以DefiningType.SetPropertyName()的形式调用静态方法。
  6. 如果为元素设置特性:xml:space="preserve",元素内所有空白字符将被保留。<TextBox xml:space="preserve"> jiaoyanq  ing</TextBox>
  7. 在XAML中引用非WPF名称空间中的类,需要把.net名称空间映射到一个XML名称空间:xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName",可以使用任何想要使用的名称空间前缀Prefix,只要在整个XAML文档中保持一致即可,但是,sys和local前缀通常在导入System名称空间和当前项目名称空间时使用。
  8. 使用XamlReader类解析XAML,在以下的代码示例中,向Window中加载了一个DockPanel对象,同样可以加载整个XAML窗口,在这种情况下,必须将XamlReader.Load()方法返回的对象转换为Window类型,然后为了显示加载的窗口调用它的Show()方法或ShowDialog()方法。 
    public partial class MainWindow : Window
    {
    private Button button1; public MainWindow()
    {
    InitializeComponent();
    } public MainWindow(string xamlFile)
    {
    this.Width = this.Height = ;
    this.Left = this.Top = ;
    this.Title = "Dynamically Loaded XAML";
    DependencyObject rootElement;
    using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
    {
    rootElement = (DependencyObject)XamlReader.Load(fs);
    this.Content = rootElement;
    }
    //注释中是另一种替代方法:
    //FrameworkElement frameworkElement = (FrameworkElement)rootElement;
    //button1 = (Button)frameworkElement.FindName("button1");
    button1 = (Button)LogicalTreeHelper.FindLogicalNode(rootElement, "button1");
    button1.Click += new RoutedEventHandler(button1_Click);
    } private void button1_Click(object sender, RoutedEventArgs e)
    {
    button1.Content = "Thank you";
    }
    }

一,XAML基础的更多相关文章

  1. Xamarin.Forms移动开发系列4 :XAML基础

    摘要 本文介绍Xamarin.Forms创建用户界面的语言:XAML基础部分. 前言 本文介绍Xamarin.Forms定义用户界面的语言:XAML. 本篇篇幅较长,主要讲述XAML语法,以及对其他基 ...

  2. WPF学习里程(二) XAML基础

    1.什么是XAML? 官方语言: XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用 ...

  3. Windows Phone 一、XAML基础语法

    XAML的命名空间 命名空间格式:语法结构为“xmlns:”+“命名空间前缀名”,默认命名空间无需定义命名空间前缀名“xmlns” 命名空间的声明 <Page x:Class="App ...

  4. XAML基础

    1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...

  5. XAML基础(一)

    1.0 XAML是啥? XAML(eXtensible Application Markup Language,可 扩展应用 程序标记语言) 是一种声明性的XML语法 ,像WPF,WF或者Silver ...

  6. WPF系列(1)WPF和XAML基础

    终于下定决心开始更新WPF一个系列的文章,这里主要是出于两个目的,一是自己对所学的知识有一个系统的总结,二十希望能对其他人有些帮助,如果您觉得我写的不好,欢迎提意见. 那么既然我要开始写WPF,那我们 ...

  7. WPF学习笔记1——XAML之1

    参考文献: http://msdn.microsoft.com/zh-cn/library/ms752059(v=vs.110).aspx <Pro WPF 4.5 in C# > 一.X ...

  8. 什么是XAML?

    XAML类似于XML一样的一种标记语言,主要用来设计UI. 对于XAML的历史,哪些都是废话了,至于Microsoft怎么整出XAML,然后,又怎么让XAML来开发windows 8应用程序,这些,都 ...

  9. Win10系列:UWP界面布局基础1

    随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...

随机推荐

  1. Swift - 使用NSNotificationCenter发送通知,接收通知

    转载自:http://www.mamicode.com/info-detail-1069228.html 标签: 1,通知(NSNotification)介绍 这里所说的通知不是指发给用户看的通知消息 ...

  2. XAMPP Apache服务器解析php页面汉字乱码的解决

    XAMPP 的Apache服务器默认未设置缺省字体,导致php网页中的汉字总是显示为乱码,每次要在浏览器中选择字符编码为“简体中文”才可正常显示. 实际上可以修改php.ini文件,找到“;defau ...

  3. PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法

    这篇文章主要介绍了PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法,是在进行PHP数据库程序开发中常会遇 ...

  4. yum中baserul路径中的空格

    配置yum源时,比如指定本地挂载的光盘时,路径中包含空格.在不使用链接的情况下,用"\"进行转义不行,把路径加单.双引号也不可行.正确做法是把空格用%20代替.同理,其他不可识别的 ...

  5. Cryptography - JavaScript 加密算法库

    Example 1: The following example uses aes function. <script type="text/javascript" src= ...

  6. Android Studio使用OpenCV后,使APP不安装OpenCV Manager即可运行

    转载自http://www.cnblogs.com/tail/p/4618790.html 采用静态初始化的方法,可以戳下边的链接查看官方的文档介绍 http://docs.opencv.org/do ...

  7. 人情世故&潜规则

    大凡成功的牛人,无一例外都明白这一点.他们读懂了社会的本质和人际交往的潜规则,知道对方需要什么,知道对方脑子里在想什么.你几乎看不见他奔波劳碌,但是在不动声色中,他就已经实现人生目标.他们成功的密码是 ...

  8. DWZ(JUI) 教程 中如何整合第三方jQuery插件

    Query插件一般是$(document).ready()中初始化 $(document).ready(function(){  // 文档就绪,初始化jQuery插件| });  // 或者或缩写形 ...

  9. C#常用的字符串操作, 包括截取

    1.取字符串的前i个字符 (1)string str1=str.Substring(0,i); (2)string str1=str.Remove(i,str.Length-i); 2.去掉字符串的前 ...

  10. 解决$_REQUEST['name']Undefined问题

    最近按照w3school一步一步学php,当学到$_REQUEST的时候,依旧按照w3cshool所提供的代码自己手敲了一遍,代码如下: <html> <body> <f ...