一,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 ...
随机推荐
- ASP.NET通过byte正确安全的判断上传文件格式
本文介绍一种更安全的方式上传图片,他能有效的防止一些通过修改文件后缀或MIME来伪造的图片的上传,从而保证服务器的安全,希望对大家有所帮助. ASP.NET中在判断文件格式时,我们以前常用的方法就是通 ...
- 【python,threading】python多线程
使用多线程的方式 1. 函数式:使用threading模块threading.Thread(e.g target name parameters) import time,threading def ...
- Scoket
1.Socket 几个常用的名词 IPC—>Inter Process Communication,进程间通信 socket —> 套接字 TCP—>Transmission Con ...
- ubuntu下安装redis
(1)进去 /usr/local目录下 cd /usr/local 若没有local这个文件夹则创建一个 sudo mkdir /usr/local sudo chmod 777 ...
- p45.asm
; ========================================== ; pmtest3.asm ; 编译方法:nasm pmtest3.asm -o pmtest3.com ; ...
- 关于使用Exception的一点心得
毫无疑问,Exception有很多优点.查看任何一本面向对象的书籍,都会提到异常相对于返回值标记状态的不足以及避免错误导致程序崩溃的问题.看起来是很好的,用起来也是很好的.可是这么多年过去了,异常用的 ...
- 转:关于视频H264编解码的应用实现
转:http://blog.csdn.net/scalerzhangjie/article/details/8273410 项目要用到视频编解码,最近半个月都在搞,说实话真是走了很多弯路,浪费了很多时 ...
- php中一串数子的转化
echo "<meta charset=utf-8>"; echo "笔试题测试"; $str = "123456780"; $ ...
- VHDL MOD和REM(转)
mod(取模)and rem(取余) VHDL has mod and rem. They return the same value if both arguments are positive. ...
- C++ 单链表基本操作
链表一直是面试的高频题,今天先总结一下单链表的使用,下节再总结双向链表的.本文主要有单链表的创建.插入.删除节点等. 1.概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数 ...