一,XAML基础
- RuntimeNameProperty特性:为什么<Grid x:Name="grid1"></Grid>等价于<Grid Name="grid1"></Grid>,是因为Grid类使用RuntimeNameProperty特性进行了修饰, RuntimeNameProperty特性指示哪个属性的值将被做为该类型的实例的名称。
- WPF的类型转换器:XAML解析器通过以下的两个方法查找类型转换器,如果找不到,XAML解析器就会生成一个错误。
1) 检查属性申明,查找TypeConverter特性,如果提供了TypeConverter特性,该特性将指定哪个类可以执行转换。
2) 如果属性申明中没有TypeConverter特性,XAML解析器将检查对应数据类型的类申明。 - XAML是大小写敏感的,所以不能使用<button>代替<Button>,但类型转换器通过不是大小写敏感的,这意味着 Foreground="White" 和 "Foreground="white"具有相同的效果。
- 标记扩展:所有标记扩展都继承自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类型的对象。
- 附加属性:它是可以用在多个控件但是在另一个类中定义的属性。它根本不是一个真正的属性,它们实际上被转换为方法调用,XAML解析器以DefiningType.SetPropertyName()的形式调用静态方法。
- 如果为元素设置特性:xml:space="preserve",元素内所有空白字符将被保留。<TextBox xml:space="preserve"> jiaoyanq ing</TextBox>
- 在XAML中引用非WPF名称空间中的类,需要把.net名称空间映射到一个XML名称空间:xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName",可以使用任何想要使用的名称空间前缀Prefix,只要在整个XAML文档中保持一致即可,但是,sys和local前缀通常在导入System名称空间和当前项目名称空间时使用。
- 使用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基础的更多相关文章
- Xamarin.Forms移动开发系列4 :XAML基础
摘要 本文介绍Xamarin.Forms创建用户界面的语言:XAML基础部分. 前言 本文介绍Xamarin.Forms定义用户界面的语言:XAML. 本篇篇幅较长,主要讲述XAML语法,以及对其他基 ...
- WPF学习里程(二) XAML基础
1.什么是XAML? 官方语言: XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用 ...
- Windows Phone 一、XAML基础语法
XAML的命名空间 命名空间格式:语法结构为“xmlns:”+“命名空间前缀名”,默认命名空间无需定义命名空间前缀名“xmlns” 命名空间的声明 <Page x:Class="App ...
- XAML基础
1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...
- XAML基础(一)
1.0 XAML是啥? XAML(eXtensible Application Markup Language,可 扩展应用 程序标记语言) 是一种声明性的XML语法 ,像WPF,WF或者Silver ...
- WPF系列(1)WPF和XAML基础
终于下定决心开始更新WPF一个系列的文章,这里主要是出于两个目的,一是自己对所学的知识有一个系统的总结,二十希望能对其他人有些帮助,如果您觉得我写的不好,欢迎提意见. 那么既然我要开始写WPF,那我们 ...
- WPF学习笔记1——XAML之1
参考文献: http://msdn.microsoft.com/zh-cn/library/ms752059(v=vs.110).aspx <Pro WPF 4.5 in C# > 一.X ...
- 什么是XAML?
XAML类似于XML一样的一种标记语言,主要用来设计UI. 对于XAML的历史,哪些都是废话了,至于Microsoft怎么整出XAML,然后,又怎么让XAML来开发windows 8应用程序,这些,都 ...
- Win10系列:UWP界面布局基础1
随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...
随机推荐
- c#几个小例子引发的思考
楚广明老师的c#教程每一节都会给出几个小例子让大家联系,对于初学者来说这确实是一件很纠结的事情,下面我把这几个小例子简单的写一下.同时看一下我们学到了什么 1.面向过程版的圆周长面积计算 using ...
- VC++ UTF-8与GBK格式转换
// 注释:多字节包括GBK和UTF-8 int GBK2UTF8(char *szGbk,char *szUtf8,int Len) { // 先将多字节GBK(CP_ACP或ANSI)转换成宽字符 ...
- 看完final的感受
今天没课,(其实是有体育课的,去打了一会球就跑路了...)就在宿舍看world final ; 我去,老毛子真是好厉害,看的我目瞪口呆,哈喇子直流; 上交的大神好厉害,本来还以为上交要夺冠的,最后罚时 ...
- 转:Android中Context详解 ---- 你所不知道的Context
转:http://blog.csdn.net/qinjuning/article/details/7310620 转:http://blog.csdn.net/lmj623565791/article ...
- Ext js中CheckBoxGroup的动态绑定
<script type="text/jscript"> var WinXianCode; function SearchGetXianLuF(Type) { if(! ...
- java 集合(list、set、map)的特点
集合相关的类有一大堆,一般也只用到常用的方法增删改查,而且它它们的方法名也基本一样,所以一直都不知道什么时候用什么集合, 今天趁有空特意从网上整理资料方便日后回忆. 一.List:.有顺序以线性方式存 ...
- 日志备份和差异备份还原中的常见问题示例(转自&邹建)
--创建测试 CREATE DATABASE db GO --正常备份 BACKUP DATABASE db TO DISK='c:\1.bak' WITH FORMAT BACKUP LOG ...
- shell语法基础
一.变量 1.linux大小写敏感,变量取名要注意大小写.可以通过变量名前面加$来访问变量的内容.可以通过使用read命令来将用户输入的值赋给一个变量. 2.给变量赋值时,如果字符串中包含空格,就必须 ...
- CentOS系统下安装以及卸载mysql
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 [root@localhost `]$ wget htt ...
- Js判断CSS文件加载完毕的实例教程
要判断这个 CSS 文件是否加载完毕,各个浏览器的做法差异比较大,这次要说IE浏览器做的不错,我们可以直接通过onload方法来处理CSS加载完成以后的处理: 代码如下 复制代码 // 代码节选至se ...