C# XMAL与WPF

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

XAML是由XML派生出来的语言,所以有很多在XML中的概念在XAML中是通用的。比如使用标签声明一个元素(每一个元素对应内存中的一个对象)时,需要使用其实标签<tab>和结束标签</tag>,夹在起始标签和终止标签中的XAML代码表示隶属于这个标签的内容。如果没有什么类容隶属于这个标签,可以写为<tag/>。

下面是最简单的XMAL代码:

为了表示同类标签中的某个标签的与众不同,可以给它的特征(Attribute)赋值。为特征赋值的语法如下:

  • 非空标签:<tag Attribute1=value1 Attribute2=value2>content</tag>
  • 空标签<tag Attribute1=value1 Attribute2=value2/>

在这里有必要把Attribute和Property仔细地辨别一下。

这个词的混淆由来已久,混淆的主要原因是大多数的中文译文里即把Attribute译为“属性”,也把Property译为“属性”,其实,这两个词表示的不是同一个层面上的东西。

Property属于面向对象的范畴。在使用面向对象编程的时候,常常需要对客观事物进行抽象,在把抽象出来的结果封装成类,类中用来表示事物状态的成员就是Property。比如要编写一个模拟赛车的游戏,那么必不可少的就是要对现实的赛车进行抽象,现实中汽车会带很多数据,但是游戏中可能只关心它的长度,宽度,高度,重量,速度等有限的几个数据,同时,还会把汽车的加速,减速等行为提取出来用算法进行模拟,这个过程就是属于抽象(结果是Car这个类)。显然,Car.Length,Car.Height,Car.Weight等表达的是当前汽车所处的一个状态,而Car.Accelerate()、Car.Break()表达的是汽车能做什么。因此,Car.Length,Car.Height就是Property的典型属性,是针对对象而言的。将Property译为“属性”也很贴切,总之一句话:Property属性是针对对象而言的。

Attribute则是编程语言文法层面的东西。比如有两个同类语法的元素A和B,为了表示A与B不完全相同或者A与B的用法上有些区别,这时候就要针对A和B加一些Attribute。也就是说Attribute只与语言层面上的东西有关,与抽象出来的对象没有什么关系。因为Attribute是为了表示“区分”的。所以它译为“特征”。C#中的Attribute就是这种应用的典型例子,我们可以为一个类添加Attribute,这个类里面有很多Property(属性)。显然,Attribute只用来影响类中程序中的用法,而Property  则对应着抽象对象身上的性状,根本不是一个层面上的东西。

习惯上,英语中把标签式语言种表示一个标签特征的“名----值”对称做Attribute。如果恰好有在使用一种标签式语言做面向对象编程,这两个概念就有可能混在一起了。实际上,使用能够使用面向对象编程的标签式语言只是把标签和对象做了一个映射-----针对标签还是叫做Attribute,针对对象还是叫做Property,仍然不是一个层面上的东西。而且,标签的Attribute不是和对象的Property一一映射的,往往一个标签对于的Atrribute大于他所映射对象的Property。

因为XAML是用来在UI上绘制控件的,而控件本身就是面向对象的抽象产物,所以XAML标签中的Atrribute有一大部分和它对应他的对象的Property是一一对应的。当然,这还意味着标签中的Atrribute并不对应它所代表对象的Property。

明白了XAML的格式以及Atrribute和Property之间对应的关系,对上面的代码可谓是一目了然。它的总体结构是一个Window标签内包含一个Grid标签(或者说Grid标签是Window标签的内容),所代表的内容是一个Window对象里面包含一个Grid对象。

以上就是我对XMAL的一些学习,学到的地方都还比较片面,还需努力,需要大神们多多指导。

时间: 2024-08-08 09:42:27

C# XMAL与WPF的相关文章

C#之XMAL与WPF

XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和Appl

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