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” ...
随机推荐
- Neo4j沙盒实验申请过程步骤(图文详解)
不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793632 (对此表示感谢) 前期博客 我暂时是将Neo4j ...
- T7316 yyy的最大公约数(者)
题目背景 全场基本暴力 题目描述 输入输出格式 输入格式: 如图 输出格式: 如图 输入输出样例 输入样例#1: 如图 输出样例#1: 如图 说明 如图 这题用到了容斥原理和线性筛的一些东西, 表示没 ...
- 一个vue的全局提示框组件
<template> <!-- 全局提示框 --> <div v-show="visible" class="dialog-tips dia ...
- JAVA-mysql读写分离插件介绍
kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作:能够让DBA通过kingshard轻松平滑地实现M ...
- call使用场景
在javascript OOP中,定义: function cat(){ } cat.prototype={ food:"fish", say: funct ...
- ibatiS启动的异常 The content of elements must consist of well-formed character data or markup
ibatiS启动的异常 The content of elements must consist of well-formed character data or markup 配置的动态SQL语句里 ...
- 迁移IPv6:6To4隧道技术
1. IPv6 路由选择协议 首先要讨论的是RIPng(下一代).RIP非常适合用于小型网络.这正是它没有惨遭淘汰,继续用于 IPV6网络的原因.另外,还有EIGRPv6,因为它有独立于协议的模块,只 ...
- 粘包_Server
from socket import *# import subprocessip_port = ('127.0.0.1',8080)back_log = 5buffer_size = 1024tcp ...
- 【洛谷4941】War2 状压Dp
简单的状压DP,和NOIP2017 Day2 找宝藏 代码几乎一样.(比那个稍微简单一点) f[i][j] ,i代表点的状态,j是当前选择的点,枚举上一个选到的点k 然后从f[i-(1<< ...
- NOIP2016 DAY1 T1 玩具谜题
题目描述 小南有一套可爱的玩具小人,它们各有不同的职业. 有一天,这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时 singer 告诉小 ...