武汉软件开发:一看就会的wpf入门教程
据了解,目前武汉软件开发市场关于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入门教程的更多相关文章
- 一看就懂的ReactJs入门教程(精华版)
一看就懂的ReactJs入门教程(精华版) 现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和 ...
- 一看就懂的ReactJs入门教程-精华版
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...
- 电脑小白学习软件开发-C#语言基础之循环重点讲解,习题
写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的 ...
- App软件开发的完整在线流程(一看就懂)
App软件开发其实并不复杂,完整的在线App开发不过9个步骤,一看就明白到底是怎么回事. 第一步:需求评估 在App项目正式启动前,客户应该对自己的需求进行评估,确认项目的开发周期和成本.登录APIC ...
- 从Windows角度看Mac OS X上的软件开发
如果原来从事Windows软件开发,想跨足或转换至Mac OS X环境,需要知道那些东西?有什么知识技能可以快速运用在Mac OS X环境上的?这两个问题应该是Windows开发者进入Mac OS X ...
- 程序员必看:如何降低APP软件开发的成本?
程序员必看:如何降低APP软件开发的成本? 作为一名曾经的程序猿,一直想写一点东西给大家分享一下,今天终于动笔了,写写我们在开发的过程中怎样才能更快更好的进行开发,降低app开发成本.无论是个人开发者 ...
- 第一章-第四题(ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么?软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?这个游戏团队, 有很好的软件,但是商业模式和其他软件之外的因素呢?有没有考虑到)--By梁旭晖
引用 http://baike.baidu.com/link?url=z_phkcEO4_HjFG_Lt163dGFAubdb68IbfcfzWscTOrrZ55WbJEQKzyMQ5eMQKyatD ...
- 看完给跪了:技术大牛总结的Github与华为软件开发云完整对比
华为软件开发云配置管理 服务和Github是国内外比较有代表性的代码托管平台,它们以git作为版本管理工具,使项目中身处各地的人员可以协同工作,主要操作涉及仓库.分支.提交.pull request等 ...
- nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...
随机推荐
- PHP微信商户支付 - 企业付款到零钱功能(即提现)技术资料汇总
PHP实现微信开发中提现功能(企业付款到用户零钱) 一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https:/ ...
- Initialize the shader 初始化着色器
目录 Loads the shader files and makes it usable to DirectX and the GPU 加载着色器文件并使其可用于DirectX和GPU Compil ...
- POJ 1256
//#include "stdafx.h" #include <stdio.h> #include <string.h> #define N_MAX 14 ...
- 将本地代码备份到Github public repository
1. 在本地代码所在的文件夹中初始化,即打开powershell,输入下面命令 git init 此时本地文件夹中会出现一个`.git`的隐藏文件夹. 2. 然后将当前的文档`commit`,在本 ...
- C# 调用继电器api usb_relay_device.dll
C# 调用继电器api usb_relay_device.dll 代码封装 usb_relay_device.dll 为C++编写 using System; using System.Collect ...
- redis.Redis与redis.StrictRedis区别
redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedi ...
- PCB Mark点相关
1)Mark点用于锡膏印刷和元件贴片时的光学定位.根据Mark点在PCB上的作用,可分为拼板Mark点.单板Mark点.局部Mark点(也称器件级MARK点) 2)拼板的工艺边上和不需拼板的单板上应至 ...
- Exp3 免杀原理与实践 20164302 王一帆
1 实践内容 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程( ...
- python 多线程 及多线程通信,互斥锁,线程池
1.简单的多线程例子 import threading,timedef b_fun(i): print "____________b_fun start" time.sleep(7 ...
- 思科与华为RIP配置区别
华为配置图如下: 思科配置图如下: 配置原理一样,除了配置命令有点区别:华为进入RIP的命令为:rip 1 思科进入RIP的命令为:router rip