Wpf学习之路……
Wpf是 .net中一门做winform的技术。
和传统的winform的区别在于:
1、原来的winform就是拖控件,而wpf的控件都死自己拿标记语言(xaml)来写,类似于web中的html.
2、开发的模式不一样,winform是mvp事件驱动,比如你得单机刷新按钮,界面的数据才会更新。而wpf是mvvm数据驱动,一旦后台的数据发生了改变,前台界面会自己更新。(初学者不用太纠结这个,先学会怎么用吧。)
两者的优缺点是:winform简单,开发快捷,只需要把逻辑写好,不用过关注界面的好看成都。
Wpf开发的界面炫,后台的逻辑清晰,可以有美工的设计人员出设计图,开发人员写后台逻辑。
说了这么多咱们开始自己的第一个hello world程序。
咱们准备的开发环境是:操作系统win7、开发环境vs2013、数据库2008。
1.建一个解决方案,解决方案的名字和该解决方案包含的第一个项目的名字一致(自动默认的)叫做MyWpf_HelloWorld

2.当我们利用wpf开发项目的时候,.net framwork为我们提供了3个dll,分别是下图红线标记出的3个,大部分的功能都是调取这3个dll所完成的。

3.下图参照红线标出的就是一个完整的wpf窗体,由后缀.xaml和xaml.cs两个文件组成,大家可以参照asp.net窗体中的aspx和aspx.cs两个文件的关系。

4.我们打开MainWindow.xaml文件
<Window x:Class="MyWpf_HelloWorld.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
大家看到它其实就是一个window窗体。在wpf中有一个容器的概念,比如上面代码中出现的Window就是一个窗体容器,这个窗体容器在一个窗体中是唯一的。其中Grid也是容器的一种。
我在这给大家大致说下wpf中的常见容器:Window 、 Grid、StackPanel、WraPanel、Canvas、ViewBox目前我常用的就这几种,大家不用着急理解他们是干什么的。
咱们先理解一下容器的概念,在我看来容器就是为了更好的布局,这个怎么讲?很简单把所有的控件都放在容器中(大家可以把容器理解成整理箱),控件本身是杂乱的有大有小,一堆堆的毫无章法,但是把控件放进容器中就不一样了。1、首先容器是有大小的,不管你的控件多大,进了容器就不能是任意大小了(只能比容器小),2.容器可以更加简洁的排布有层次感,就好像杂乱无章的库房中任意对方着图书,把这些图书按类别和大小组合放进箱子,看起来是不是更加整洁和方便寻找具体的每一本图书?哈哈……
细心的小伙伴们注意到了Window中有很多属性,咱们一句句的来分析,
1、 x:Class="MyWpf_HelloWorld.MainWindow" 这一句的意思是制定这个窗体的后台代码是哪个类,从代码中我们可以看出,他的后台类是:MyWpf_HelloWorld项目下的MainWindow这个类。
2、xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
这2句看起来很想一个超链接,但其实并不是……
他们只是对命名空间的一种映射,说白了就是xmlnx和x你可以根据这2个别名来访问他们下边的方法、类、接口、属性等一切位于命名空间的东西。将来你自己写的功能也可以通过这种方式来映射格式为:映射名=“你自己类的位置”,例如local=” MyWpf_HelloWorld.Test”意思就是说在MyWpf_HelloWorld项目里有一个叫Test的类,我给它起了个名字叫local,这样以后每次用就不用每次都写MyWpf_HelloWorld.Test这一长串了,直接local:就可以,冒号后面写的就是你想用的方法,或属性。
3. Title="MainWindow" Height="350" Width="525" 这一句就简单多了说白了就是Window的名字和宽 高,Window还有很多类似的属性,大家以后慢慢发现。
接下来咱们修改一个代码(加入一句:<TextBlock x:Name="m_TextBlock" Text="Hello World" Width="80" Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="10" Foreground="Red"></TextBlock>)
<Window x:Class="MyWpf_HelloWorld.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock x:Name="m_TextBlock" Text="Hello World" Width="80" Height="30" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="10" Foreground="Red"></TextBlock>
</Grid>
</Window>
同学们可以直接粘到自己的代码中,接下来运行看下图,哈哈大家的第一个wpf的HelloWorld。
Wpf学习之路……的更多相关文章
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF学习之路(一) 初识WPF
参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...
- WPF学习之路一
前段时间一直在学习MVC,工作需要,现在需要180度急转弯,搞WPF,MVVM,只能找资料学习了. WPF中有一个消息机制,就是当前台控件绑定的值改变时,会自动通知到指定的事件来改变VM的值,反之亦然 ...
- WPF学习之路(十四)样式和模板
样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...
- WPF学习之路(十三)URL
URL一般由三个部分组成,协议.资源所在主机地址.资源路径 WPF中URL同样有三部分组成:pack.authority(application:| siteoforigin:).路径 资源文件 本地 ...
- WPF学习之路(十二)控件(Items控件)
ListBox 提供了一个选项列表,可以固定或者动态绑定 <StackPanel> <GroupBox Margin="> <GroupBox.Header& ...
- WPF学习之路(九)导航和页面(续)
生命周期 如果Page1成功导航到Page2,首先会触发NavigationService的Navigating事件,标识导航开始.随后创建Page2对象,并且触发NavigationProgress ...
- WPF学习之路(九)导航链接
Hyperlink WPF中超链接类型是Hyperlink,除了能在页面之间导航,还能再同一个页面下进行段落导航 实例: <Grid> <FlowDocumentReader> ...
- WPF学习之路(八)页面
传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...
- WPF学习之路(七)应用程序和窗口(续)
窗口的生命周期 WPF中一个Window类代表一个窗口 一个的窗口的生命周期也有好几个阶段: 1.构造器被调用 2.Window.Initialized事件被触发 3.Window.Activated ...
随机推荐
- linux c++ 加载动态库常用的三种方法
链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile 设置环 ...
- java(jdk1.7) IO系列01之InputStream和OutputStream解析
1.InputStream和OutputStream简介 在java中InputStream和OutputStream分别代表字节输入流和字节输出流,表示以字节的方式来实现进程或者程序的通信,Inpu ...
- react-router 中的history(react中关于后退键的处理用的到)
react-router 中的history react-router 是建立在history之上的:我们来谈谈这个history吧. github: mjackson/history history ...
- SQL中的存储过程和函数
存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如 ...
- 每天一个Linux命令(10)--cat命令
--首先,恭喜你,这是第十个命令啦. --为啥第十个就要恭喜?没啥特别呀? --因为逢十进一啊! cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或 ...
- jQ试题的总结
jQuery习题的一些总结 1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has $ ...
- [转载]解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
本文转载自http://blog.csdn.net/w_9449/article/details/52864135 转载请申明哦,其实我发现自从我在贴吧发了帖子后,就冒出了不少帖子.经验.当然方法和我 ...
- Selenium 切换句柄
最近用了网络上别人的一段切换窗口的code每次成功了,不错,学习 // 根据Title切换新窗口 public boolean switchToWindow_Title(WebDriver drive ...
- Java豆瓣电影爬虫——模拟登录的前世今生与验证码的爱恨情仇
前言 并不是所有的网站都能够敞开心扉让你看个透彻,它们总要给你出些难题让你觉得有些东西是来之不易的,往往,这也更加激发你的激情和斗志! 从<为了媳妇的一张号,我与百度医生杠上了>里就有网友 ...
- 1754: [Usaco2005 qua]Bull Math
1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 398 Solved: 242[Submit ...