WPF XAML
- 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就表示这个命名空
- 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: - WPF Xaml的标记扩展常用的包括:StaticResource,DynamicResource,TemplateBinding等,完整的参考:http://msdn.microsoft.com/zh-cn/library/ms747180(v=vs.110).aspx.要注意WPF xaml的标记扩展与上面xaml本身自带的标记扩展X:Static等的区别
- InitializeComponent():由编译器自动生成,功能是调用System.Windows.Application类的LoadComponent()方法从程序集中提取BAML(编译过的XAML),并使用它构建用户界面
- 在代码中要操作控件,则控件必须包含XAML Name属性,这样XAML编译器会自动生成以Name命名的对象,前提是使用RuntimeNameProperty标签修饰了类,由于FramworkElement类使用了RuntimeNameProperty修饰了所以继承自它的控件都可以这样使用
- 复杂属性的设置,以设置Grid的Background为例,如果想使用其他画刷设置Background,可以通过如下方式添加其他标签来实例化特定的类
<Grid Name="grid1">
<Grid.Background>
<LinearGradientBrush>
</LinearGradienBrush>
</Grid.Background>
</Grid> - 标记扩展:可以使属性值绑定到一个动态变化的量,所有标记扩展类都继承自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指定为属性的值
- 附加属性,通常用于控件布局
- Xaml让父元素决定如何处理嵌套的子元素,算法如下:
- 父元素继承自IList,则解析器调用IList.Add 添加子元素
- 父元素继承自IDictionary,则解析器调用IDictionary.Add方法添加子元素,当使用字典集合时,还必须设置x:Key特性为每个item指定一个键名
- 父元素使用了ContentProperty特性进行修饰,则解析器使用Children.Add 添加子元素
- Xaml中引用其他名字空间:
xmlns:prefix="clr-namespace:Namespace;assembly=AssemblyName"
prefix是名字空间的简称,例如x是xmla名字空间的简称,可以在xmla中使用 - Xaml可以不随项目一起编译,项目中可以XamlReader读取xaml, 并用LogicalTreeHelper.FindLogicalNode或者FrameWorkElement.FindName方法获取对象
WPF XAML的更多相关文章
- WPF XAML之bing使用StringFormat
WPF XAML之bing使用StringFormat // 转化为百分比 Text="{Binding Progress, StringFormat=\{0:P\}}" < ...
- [WPF,XAML] 跳动的心
原文:[WPF,XAML] 跳动的心 没什么艺术细胞,原谅,原谅! <Canvas Width="0" Height="0"> <Canvas ...
- 使用MVVM DataTemplate在WPF XAML视图之间切换
原文 使用MVVM DataTemplate在WPF XAML视图之间切换 更新:这个技术的改进版本,一个不创建视图,可以在以下链接找到: http://www.technical-recipes.c ...
- 使用MVVM DataTriggers在WPF XAML视图之间切换/Window窗口自适应内容大小并居中
原文 使用MVVM DataTriggers在WPF XAML视图之间切换 相关文章: http://www.technical-recipes.com/2016/switching-between- ...
- 标记扩展和 WPF XAML
本主题介绍 XAML 的标记扩展概念,包括其语法规则.用途以及底层的类对象模型. 标记扩展是 XAML 语言以及 XAML 服务的 .NET 实现的常规功能. 本主题专门详细论述了用于 WPF X ...
- WPF - XAML如何引入名字空间
WPF 的XAML引入名字空间的概念,经常容易让人混淆.如何引入名字空间,并且在XAML中调用其中的类,下面给一个简单的介绍. 比如我们有一个Hepler类. namespace Wheat.PIMS ...
- WPF XAML 资源样式模板属性存放位置
WPF的XAML 资源申明 类似HTML. 整体来说分3种1.行类资源样式属性 1.1 行内属性 <Button Content="按钮" Foreground=" ...
- XAML属性赋值转换之谜(WPF XAML语法解密)
XAML与XML类似,就是XML延伸过来的.为了更好的表达一些功能,WPF对XML做了扩展,有些功能是WPF在后台悄悄的替你做了.有时候,虽然实现了某个功能,但是对实现原理还是很茫然.今天就讲讲XAM ...
- wpf.xaml.behavior
Install-Package Microsoft.Xaml.Behaviors.Wpf Remove reference to “Microsoft.Expression.Interactions” ...
随机推荐
- ios 中生成随机数
ios 有如下三种随机数方法: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; 2. s ...
- python中is与==的差别
# is:比较的是两个对象的id值是否相等,# 也就是比较俩对象是否为同一个实例对象,# 是否指向同一个内存地址 # s = "alex"# abc = id(s) # 得到内存地 ...
- PHP分页组件:Paginator
安装 composer require "jasongrimes/paginator:~1.0" 使用 <?php require '../vendor/autoload.p ...
- 手把手教你写带登录的NodeJS爬虫+数据展示
其实在早之前,就做过立马理财的销售额统计,只不过是用前端js写的,需要在首页的console调试面板里粘贴一段代码执行,点击这里.主要是通过定时爬取https://www.lmlc.com/s/web ...
- android webview一些注意事项(持续更新)
1.loadUrl() 的参数必须“http://”开头: 2.如果用到内部类获取页面内容,此类不能混淆: 3.2中情况保持不混淆需要将webview所在的包都保持不混淆,常规的保持类不混淆不生效: ...
- 【Paper Reading】Learning while Reading
Learning while Reading 不限于具体的书,只限于知识的宽度 这个系列集合了一周所学所看的精华,它们往往来自不只一本书 我们之所以将自然界分类,组织成各种概念,并按其分类,主要是因为 ...
- (转)硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程
硬盘结构硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电 ...
- python安装Redis数据库
where pip cd 切换这个目录 pip install redis import redis r = redis.Redis(host='127.0.0.1', port=6379) user ...
- d3代码如何改造成update结构(恰当处理enter和exit)
d3的enter和exit 网上有很多blog讲解.说的还凑合的见:https://blog.csdn.net/nicolecc/article/details/50786661 如何把自己的rude ...
- [学习笔记] CS131 Computer Vision: Foundations and Applications:Lecture 9 深度学习
深度学习 So far this week Edge detection RANSAC SIFT K-Means Linear classifier Mean-shift PCA/Eigenfaces ...