一,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 ...
随机推荐
- IOS 中frame与bounds的区别
文章摘要:http://www.sendong.com/news1733.html bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系 ...
- Oracle 基础 <2> --函数
一:函数的定义 函数是用于返回特定数据的PL/SQL程序块 (函数必须返回一个值) 语法: create [or replace] function function_name--函数名称 [(par ...
- Oracle数据库SQL优化
SQL优化的最终目的是用户体验-在最短时间内让用户在页面数据.因此,执行时间是SQL优化的重要指标.在SQL查询中,I/O操作最占系统性能的.I/O操作量越大,时间越久.减少I/O操作量是优化SQL的 ...
- Smart法则
设立目标不是一个很简单的事情.人们经常会犯一些基本的错误,即过于理想化.不符合客观情况.不容易执行落实,因此计划容易变成一种“美好的愿望”而已.在20世纪70年代,一位美国人为设立目标做出了一个简单而 ...
- “System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本” 的解决方案
在项目部署过程中ORACLE客户端多次会遇"System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&qu ...
- 可以伸缩的查询面板 (searchBar)
最近有这样的需求,一个页面查询条件特别多,一次全部展示出来的话就占用大量的空间,所以分成了两类,简单搜索和高级搜索,当点击高级搜索的时候就会全部显示. 这样就存在一个问题,页面(navTab,dial ...
- MVC EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
遇到这个错误 在查询时 加上asNoTracking() 即可
- 使用命令修改ip地址
简述:以serverv 2012 r2为例 常用的几种,当然不全,希望能较快的速率记下一种便可 直接配置 1. 查看网卡的显示名称 2. 配置静态iP地址 3. 查看配置 ...
- SQL语句统计每天的数据
按用户注册时间统计每天注册的不同来源.不同状态的用户数量: ), RegisterTime, ) RDate ,--DATEPART(YEAR, RegisterTime) 年 ) END 'AWai ...
- 细说SQL 连接
连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句 也可以包含搜索条件,以进一步筛选连接条件所选的行. ...