据了解,目前武汉软件开发市场关于PC端桌面开发的技术主要有两块:winform和wpf。wpf是微软既winform之后推出的一套新的桌面开发技术。采用数据驱动的方式可以轻松编写出非常炫的界面。

1、XAML语言是一种界面描述语言,用户界面用XAML的元素或属性来表示,WPF引擎把XAML描述的UI元素解释为相应的.NET对象,从而在桌面程序上创建相应的控件。

2、WPF编程模型是XAML标记语言和逻辑编程语言(C#)的混合,界面元素以及他们的相互关系是用XAML的节点、属性以及相互关系来描述的。

3、XAML的根元素常见的主要有2个:Window(用于桌面应用程序)、Page(Web应用程序)。不常见的:FlowDocument、Application和Grid。

4、XAML中命名空间用xmlns属性表示,并且一个XAML命名空间对应一个或多个.NET命名空间(好处是在XAML中不必写过多的命名空间)。常用的两个命名空间是:http://schemas.microsoft.com/winfx/2006/xaml/presentation(默认命名空间)和http://schemas.microsoft.com/winfx/2006/xaml(特定功能--控制XAML编译器),这两个命名空间几乎包含WPF中所有命名空间。

5、使用XmlnsDefinition特性将多个.NET命名空间合并到一个XAML命名空间:在AssemblyInfo.cs文件中

[assembly:XmlnsDefinition("http://www.motyer.cn", "Moty.Utils")]

[assembly:XmlnsDefinition("http://www.motyer.cn", "Moty.UI")]

【扩展】xmlns:x表示的含义:

xmlns:x和xmlns一样,是申明一个命名空间,区别在于xmlns申明特定属性的命名空间。比如下面的代码

<Root xmlns="http://www.motyer.cn"

xmlns:blog="http://www.motyer.cn/blog"

Author="motyer"

CreateTime="2016/12/30"

blog:Count="256"

blog:CreateTime="2016/12/30">

……………………

</Root>

在上面的代码里面,有2个属性前面都带有前缀blog,对于这类属性的命名空间就是由xmlns:blog指出的,而另外不带任何前缀的属性的命名空间是由xmlns指出的。

6、如果要在XAML里面使用自定义的类和属性,那么必须要先按如下方式引入命名空间:xmlns:custom="clr-namespace:Moty.Utlis.Codec",并且在使用时需要在属性前面加上前缀custom。

7、WPF开发采用代码分离(Code Behind)技术,一个WPF应用程序一般由2部分构成:XAML描述UI、C#处理逻辑。

8、排版类元素可以包含多个子元素,内容控件只能包含一个子元素(如:Window)。

9、相关属性表示方法:

==> 第一种方法(简洁、推荐)

<DockPanel Background="Red">...</DockPanel>

==> 第二种方法

<DockPanel>

<DockPanel.Background>Red</DockPanel.Background>

</DockPanel>

10、2类标记扩展:

①WPF标记扩展(StaticResource、DynamicResource、Binding、RelativeSource、TemplateBinding);

②XAML标记扩展(x:Type、x:Static、x:null、x:Array)

* x:Type:在XAML中取对象的类型,相当于C#里面的typeof;

* x:null:将目标属性的值设为null;

* x:Array:在XAML里面创建一个数组

<x:ArrayExtension Type="{x:Type sys:Int32}"

x:Key="myArray">

<sys:Int32>1</sys:Int32>

<sys:Int32>2</sys:Int32>

<sys:Int32>3</sys:Int32>

</x:ArrayExtension>

* x:Static:把某个对象上的属性或域的值赋给目标对象的相关属性。

11、XAML使用{}表示扩展,例如:

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=PersonName}"/>

该例使用了2个扩展,Binding、StaticResource,并且是嵌套扩展。

(猜想:可能有一个Binding类,初始化的时候需要给定Source和Path两个属性的值。)

12、自定义扩展:新建一个类,继承MarkupExtension类,重写ProvideValue方法。

武汉蚂蹄软件服务中心主营软件项目外包,专注于提供中小型软件定制、网站建设、微信开发和APP开发等商务解决方案。联系QQ:773347113

武汉软件开发:一看就会的wpf入门教程的更多相关文章

  1. 一看就懂的ReactJs入门教程(精华版)

    一看就懂的ReactJs入门教程(精华版) 现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和 ...

  2. 一看就懂的ReactJs入门教程-精华版

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...

  3. 电脑小白学习软件开发-C#语言基础之循环重点讲解,习题

    写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的 ...

  4. App软件开发的完整在线流程(一看就懂)

    App软件开发其实并不复杂,完整的在线App开发不过9个步骤,一看就明白到底是怎么回事. 第一步:需求评估 在App项目正式启动前,客户应该对自己的需求进行评估,确认项目的开发周期和成本.登录APIC ...

  5. 从Windows角度看Mac OS X上的软件开发

    如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...

  6. 程序员必看:如何降低APP软件开发的成本?

    程序员必看:如何降低APP软件开发的成本? 作为一名曾经的程序猿,一直想写一点东西给大家分享一下,今天终于动笔了,写写我们在开发的过程中怎样才能更快更好的进行开发,降低app开发成本.无论是个人开发者 ...

  7. 第一章-第四题(ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?这个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到)--By梁旭晖

    引用 http://baike.baidu.com/link?url=z_phkcEO4_HjFG_Lt163dGFAubdb68IbfcfzWscTOrrZ55WbJEQKzyMQ5eMQKyatD ...

  8. 看完给跪了:技术大牛总结的Github与华为软件开发云完整对比

    华为软件开发云配置管理 服务和Github是国内外比较有代表性的代码托管平台,它们以git作为版本管理工具,使项目中身处各地的人员可以协同工作,主要操作涉及仓库.分支.提交.pull request等 ...

  9. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

随机推荐

  1. JS截取页面,并保存到本地

    想截取浏览器上内容,并做成图片保存到本地. 可以使用html2canvas.js进行操作. <!DOCTYPE html> <html lang="en"> ...

  2. 原生JS插件(超详细)

    作为一个前端er,如果不会写一个小插件,都不好意思说自己是混前端界的.写还不能依赖jquery之类的工具库,否则装得不够高端.那么,如何才能装起来让自己看起来逼格更高呢?当然是利用js纯原生的写法啦. ...

  3. C# Levenshtein计算字符串的相似度

    static void Main(string[] args) { Levenshtein(@"今天天气不错", @"今天的天气不错啊"); Console.R ...

  4. HTML5+CSS3 1

    html5标准模板 <!DOCTYPE html>   //<!DOCTYPE>标签 向浏览器声明当前文档使用的HTML版本,<!DOCTYPE html>适用于所 ...

  5. XFire+Spring构建Web Service经验总结

    使用工具 MyEclipse:6.5 ,tomcat6.x. 1.新建web项目,要导入用的包: 2程序结构: 3 web.xml配置文件 <?xml version="1.0&quo ...

  6. ECMAScript 6 之 let 和 const 命令

    1.let基本用法 1.1.声明变量 let声明的变量只在它所在的代码块有效. 1.2.不存在变量提升 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined: let命令 ...

  7. Linux-网络综合实验

    题目要求:财务部门有俩台机器acc-1和acc-2,it部门有俩台机器it-2和it-2,要求acc机器互通,it机器互通,财务部和it部机器通过路由器互通

  8. angularjs和ajax的结合使用 (三)

    转眼九月份了,忙忙碌碌 发现今年还没开过张,写一篇吧. 15年在空闲时就倒腾过angularjs那玩意儿 ,觉得还是挺好的,李金龙那厚厚的一本书,只不过没有系统化应用.最主要的是原来有一个东西没有用到 ...

  9. python3安装lxmlpipinstall安装失败解决办法

    最近在学习python爬虫技术,lxml模块拥有很强大的获取元素功能,但是安装时总超时报错,如下解决办法 选择好python版本→注意pip版本→下载对应lxml.whl→键入对应的字符串→bingo ...

  10. VS2015|Visual Studio Enterprise 2015简体中文版(企业版)

    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.Visual Studio 2015 是一个丰富的集成开发环境,可用于创建出色的 Windows.Andr ...