C#之XMAL与WPF

XAML的简单说明

XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面

XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象

XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素

了解XAML

VisualStudio创建一个窗口,默认情况下产生的代码如下:

这段代码中包含两个标记元素,一个是Window,一个是Grid

Window是WPF顶级元素的一种,还有另外两种顶级元素Page和Application


Window
用于描述一个窗口

Page

和Window类似,但它用于可导航的应用程序

Application
用于定义应用程序资源和启动设置

任何一个XAML文档只能拥有一个顶级元素

属性

窗口标签中Title、Height、Width都是窗口的属性

在XAML文件中属性的值的类型总是字符串,

但XAML的解析器可以把这些字符串转换成.NET的任意类型

名称空间

在上面代码中,用xmlns属性来标记此文档从属于哪个名称空间

为什么需要名称空间呢?

如果我们在第三方组件中定义了Window类,如果没有一个名称空间做限定的话,

编译器不知道我们将使用哪个Window类型来渲染窗口

我们在上面的代码中,看到了两个名称空间,一个是WPF核心名称空间、一个是XAML名称空间


WPF核心名称空间

http://schemas.microsoft.com/winfx/2006/xaml/presentation

包含所有WPF类,包含用来构建用户界面的控件,是文档的默认名称空间


XAML名称空间

http://schemas.microsoft.com/winfx/2006/xaml

包含各种XAML实用特性,这些特性可以影响文档的解释方式,该名称空间被映射为前缀x,使用前需要标注前缀x,比如:<x:ElementName>

有了名称空间的限定,我们直接书写的<Grid>标签,才可以映射到System.Windows.Controls.Grid类上

代码隐藏类

XAML创建用户界面,但交互规则还是需要.NET语言编写

x:Class属性标记着与该XAML文件相配合的.NET类

注意这个类是一个“部分类”

这个部分类的构造函数中调用了InitializeComponent方法,

这个方法负责创建控件对象、设置属性、绑定事件、构造用户界面等工作

复杂属性

有些属性的值不是一个简单类型,而是一个对象,不如下面这个Grid的背景颜色



我们现在只要知道XAML解析器也能创建出复杂属性对应的值即可

标记扩展

如果我们希望把属性值绑定为一个已经存在的对象,那么我们可以使用静态标记扩展

标记扩展还有很多其他的用法,我们以后再聊

这里也涉及到了属性绑定,我们以后再聊

附加属性

对于嵌套的元素,子元素可以使用父元素定义的一些属性,这类属性就是附加属性

在WPF中附加属性多用于布局

修改记录

时间: 2024-11-07 23:14:21

C#之XMAL与WPF的相关文章

C# XMAL与WPF

通过老师上课的解释和我下课后的网上查询,我了解到了一些关于这三者的关系.XAML是.NET体系开发程序或者网页时前台编程的一种布局方式或者说开发语言,可以比较自由的用标签的方式进行布局,借鉴了HTML和XML等语言的风格,并且加入了一些动画等的实现. C#则是后台逻辑开发用的编程语言,这个应该不用多说. WPF则是微软准备代替C#.NET中Forms编程方式的一种全新编程方式,其方式就是前台采用XAML控制布局,后台可以用C#,VB,C++等来相应,相当于前面用XAML写了个控件,而其控制逻辑指

wpf xmal基础

1.名称空间的引用 比如想使用System.Windows.Controls名称空间 首先需要把改名称空间所在的程序集presentationFramework.dll引用到项目里 然后在根元素的起始标签中写上一句:xmlns:c="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"

【WPF学习笔记三】空WPF项目元素详解

我们在VisualStudio2010创建了一个空WPF程序,现在我们来对这个空WPF程序的所有元素进行讲解! 1.<Window x:Class="WpfApplication1.MainWindow" 2.        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3.        xmlns:x="http://schemas.microsoft.com/

炫酷WPF——XAML

XAML主要规则: → XAML文档中的每个元素都映射为.NET类的一个实例,元素的名称也完全对应于类名.如元素<Button>指示WPF创建Button对象. → 与所有XML文档一样,可在一个元素中嵌套另一个元素,XAML让每个类灵活地决定如何处理嵌套.嵌套通常是一种表示“包含”的方法——如果在一个Grid元素中发现一个Button元素,那么用户界面可能包括 一个在其内部包含一个Button元素的Grid元素. → 可通过attribute设置每个类的property.在某些attribu

WPF基础学习笔记整理 (一)

基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: Silverlight是WPF的一个子集,是WPF的“网络版”(WPF/E): WPF的开发理念:“数据驱动”,数据驱动UI,数据第一,空间第二: 数据与界面之间的桥梁是Data Binding: MVVM:Model-View-ViewModel: XMAL:Extensible Applicati

wpf 模拟3D效果(和手机浏览图片效果相似)(附源码)

原文 wpf 模拟3D效果(和手机浏览图片效果相似)(附源码) pf的3D是一个很有意思的东西,类似于ps的效果,类似于电影动画的效果,因为动画的效果,(对于3D基础的摄像机,光源,之类不介绍,对于依赖属性也不介绍.),个人认为,依赖属性这个东西,有百分之五十是为了3D而存在.(自己写的类似于demo的东西)先上图,无图无真相这是demo的整个效果图,可以用鼠标移动,触摸屏也可以手指滑动,图片会移动,然后移动结束,会有一个回弹的判断. <Window x:Class="_3Dshow.Wi

通过一个WPF实例进一步理解委托和事件

在前写过"浅谈C#中的委托"和"浅谈C#中的事件"两篇博客,内容有些抽象,似乎难以说明委托和事件的关系. 今天通过一个小程序来进一步说明二者的使用及联系. 首先新建一个WPF应用程序,取名TestDelegateAndEvent. 在.xmal中加入四个按钮,并添加Window_Loaded事件. 代码如下: <Window x:Class="TestDelegateAndEvent.MainWindow" xmlns="http

WPF 多屏时子窗口的屏幕位置问题

问题: 在多个显示屏运行的情况下,如果将主窗口从当前显示屏移动到另一显示屏. 设置子窗口单例模式,在当前显示屏时弹出后,在主窗口移动到另一显示屏后,再弹出子窗口时,你会发现子窗口跑到原来显示屏去了. ----这是WPF的锅 因为已经设置了WindowStartupLocation="CenterOwner",也加了Owner的情况下,窗口每次弹出,理论上就该和主窗口保持在同一屏幕的. 解决: 通过窗口的Activated添加委托,每次窗口唤醒,都重新设置窗口的Location subW

WPF从我炫系列4---装饰控件的用法

这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollViewer滚动条控件 大家知道在WPF中的一些布局控件中是不带滚动条的,如果里面的内容控件超过了外面布局控件的大小,就不能完全被显示出来,这个时候我们就可以使用滚动条控件,让它滚动显示. 效果图: 默认情况下ScrollViewer是显示垂直滚动条的.但是可以通过属性来控制滚动条的显示. Horizont