WPF 10天修炼 第二天- XAML语言
XAML是什么
XAML是一种与.NET CLR紧密集成的声明性UI标记语言。XAML中的对象元素对应到CLR中的类型或结构。XAML命名空间对应到CLR中类的命名空间,元素类型则对应到CLR中的类型。XAML是xml的子集,因此严格遵循XML的语法规范。
新建一个WPF空项目,下面是默认生成的XAML结构
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow"> <Grid> </Grid> </Window>
XAML代码组成:
1、 一个根元素<Window>和</window>标记。在XAML中,必须有且只能有一个根元素。
2、 紧接着根元素的XML命名空间的声明。在每个XAML文件中必须要具有两个命名空间。
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation 表示WPF命名空间,也就是XAML元素对应到CLR类的命名空间。
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml 表示XAML文件本身的命名空间,语法是xmlns:x,这个是x是命名的前缀可以是任意的字符。如果我们需要导入一些自定义的命名空间,那么我们就需要加上“:+自定义的形式”,这里微软导入了一个自定义的命名空间。
使用其它命名空间的类型语法:
xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName"
Prefix:用户指定希望在XAML文档中使用的命名空间的前缀,类似于XAML命名空间使用的x:前缀,可以指定任意的字符串。
Namespace:是完整的.net命名空间名
AssemblyName:程序集名称,不用指定.DLL扩展名。这个程序集必须被当前的WPF项目所引用。
3、下面是<Grid>标记,代表XAML文件的UI内容。
代码后置文件
使用项目模板创建一个窗体或页面时,VS会自动生成一个相应XAML文件扩展名在再加上.cs的代码后置文件。XMLA中通过使用x:class 语法关联到一个特定的后置类。
X:Class后置类指定为WpfApplication1.MainWindow,可以打开后置代码文件,看到一个名为WpfApplication1的命名空间,有一个MainWindow的类。X:class告诉XAML解析器,使用指定的名称来产生一个新的类,这个类派生自XAML跟元素类。因此在代码后置文件中可以看到MainWindow类继承自Window类。代码如下:
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
特定的字符和空白
XAML严格遵循XML语法规范,在XML中,对特定的字符,比如& < > 等需要进行特殊处理,所以在XAML中也需要使用特定的代码来替换这些字符。
小于符号<:< <Button Content="小于号:<"></Button>
大于符号>:&gl <Button Content="大于号:>"></Button>
And符合&:& <Button Content="And符号:&"></Button>
引号””:" <Button Content="引号:""></Button>
在XAML中使用事件
XAML代码中事件的声明通常使用事件名=”事件处理方法名”,并且在后置代码中对指定的方法提供声明和实现。
XAML代码
<Window x:Class="WPFDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFDemo"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel >
<!---定义按钮样式-->
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Height" Value="50"></Setter>
<Setter Property="Width" Value="200"></Setter>
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
</Style>
</StackPanel.Resources>
<Button Content="点击我试试" Name="button1" Click="button1_Click"></Button>
</StackPanel>
</Window>
后置代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("我是单击事件");
}
WPF 10天修炼 第二天- XAML语言的更多相关文章
- WPF 10天修炼 第七天- WPF资源、样式、控件模板
WPF资源 对象资源 WPF允许在XAML标记的任意位置定义资源.比如在特定的控件.窗口或应用程序级别定义资源,WPF资源系统提供的对象资源有如下好处: 1. 高效:使用对象资源可以在一个地方定义而 ...
- WPF 10天修炼 第一天- 入门
简介 WPF技术基于DirectX,完美的整合了矢量图形.2D或3D绘图技术.文件及多媒体技术.WPF将开发人员和设计人员的职责清楚的分离,提供了一种声明编程语言XAML.同时Expression B ...
- WPF 10天修炼 第十天- WPF数据绑定
WPF数据绑定 数据绑定到元素属性是将源对象指定为一个WPF元素,并且源属性是一个依赖属性,依赖属性内置了变更通知.当改变源对象依赖属性值之后,绑定目标可以立即得到更新,开发人员不需要手动编写响应事件 ...
- WPF 10天修炼 第九天 - 几何图形
几何图形 使用LineGeometry.RectangleGeometry.EllipseGeometry对象分别绘制直线.矩形.椭圆. 使用GeometryGroup可以绘制组合图形. <Wi ...
- WPF 10天修炼 第八天 - 形状、画刷和变换
图形 在WPF中使用绘图最简单的就是使用Shape类.Shape类继承自FrameworkElement,是一个专门用来绘图的类.Shape类中年派生的类有直线.矩形.多边形和圆形等. System. ...
- WPF 10天修炼 第六天- 系统属性和常用控件
WPF系统属性和常用控件 渐变的背景色 WPF中的前景色和背景色不同于传统Winform的设置,这些属性都是Brush类型的值.在XAML中,当为这些属性设置指定的颜色后将被转换为SolidColor ...
- WPF 10天修炼 第五天- 内容控件
WPF内容控件 在WPF中,所有呈现在用户界面上的对象都称为用户界面元素.但是只有派生自System.Windows.Controls.Control类的对象才称为控件.内容控件通常是指具有Conte ...
- WPF 10天修炼 第四天- WPF布局容器
WPF布局 WPF的窗口也就是Window类,是一个内容控件,该控件派生自ContentControl.内容控件有一个Content属性,该属性有一个限制,只能放置一个用户界面元素,或一个字符串.为了 ...
- WPF 10天修炼 第三天- Application全局应用程序类
Application对象 当一个WPF应用程序启动时,首先会实例化一个全局唯一的Application对象,类似于WinForm下的Application类,用于控制整个应用程序,该类将用于追踪应用 ...
随机推荐
- beanshell断言模版
if("${createTime_1}".equals("${createTime_2}")){ Failure = false; FailureMessage ...
- ThunderBird配置邮箱后无法发送邮件
今天遇到的问题是在ThunderBird配置邮箱后无法发送邮件.用户名和密码都验证过去了.但一直无法发送邮件. 1.首先imap 和smtp 服务器都是通的. telnet imap.base-fx. ...
- Fedora 24系统基本命令
Fedora 24基本命令 一. DNF软件管理 1. 修改配置:在/etc/dnf/dnf.conf中加入fastestmirror=true.keepcache=true ...
- 《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
非常荣幸作为晓峰哥的同事,之前就看过这篇文章,重写读一遍,再学习学习. 一.开篇词 初级.中级:java和计算机科学基础.开源框架的使用:高级.专家:java io/nio.并发.虚拟机.底层源码.分 ...
- python学习笔记之元祖
#元祖 只读列表,可循环查询,可切片.#儿子不能改,孙子可能可以改. tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon') print(tu[3]) print(tu ...
- mysql 在visual studio中的配置
视图-->其他窗口-->服务器资源管理器-->数据连接-->右键添加连接 servername:localhost username:root password:123456 ...
- 关于snmp octet string和普通string问题
我是获取的Octet String用String输出,输出的是一连串的2个16进制数 空格.:然后想对输出结果操作,得到我想要的值. 解决方案:private static string exchan ...
- CentOS6和CentOS7
http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso net.ifnames= biosdevname ...
- elasticsearch 6.2.4添加用户密码认证
elasticsearch 6.3版本之前的添加认证需安装x-pack插件,6.3之后貌似去掉了这个. 1.安装x-pack 先切换到elastic用户下,在执行以下命令 $cd /data/elas ...
- jemter测试中常见的名词解析
1.响应时间(RT) 响应时间是指系统对请求做出响应的时间 2.吞吐量(TPS)[Throughput] 吞吐量是指系统在单位时间内处理请求的数量 3.并发用户数 并发用户数是指系统可以同时承载的正常 ...