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学习之路……的更多相关文章

  1. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  2. WPF学习之路(一) 初识WPF

    参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...

  3. WPF学习之路一

    前段时间一直在学习MVC,工作需要,现在需要180度急转弯,搞WPF,MVVM,只能找资料学习了. WPF中有一个消息机制,就是当前台控件绑定的值改变时,会自动通知到指定的事件来改变VM的值,反之亦然 ...

  4. WPF学习之路(十四)样式和模板

    样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...

  5. WPF学习之路(十三)URL

    URL一般由三个部分组成,协议.资源所在主机地址.资源路径 WPF中URL同样有三部分组成:pack.authority(application:| siteoforigin:).路径 资源文件 本地 ...

  6. WPF学习之路(十二)控件(Items控件)

     ListBox 提供了一个选项列表,可以固定或者动态绑定 <StackPanel> <GroupBox Margin="> <GroupBox.Header& ...

  7. WPF学习之路(九)导航和页面(续)

    生命周期 如果Page1成功导航到Page2,首先会触发NavigationService的Navigating事件,标识导航开始.随后创建Page2对象,并且触发NavigationProgress ...

  8. WPF学习之路(九)导航链接

    Hyperlink WPF中超链接类型是Hyperlink,除了能在页面之间导航,还能再同一个页面下进行段落导航 实例: <Grid> <FlowDocumentReader> ...

  9. WPF学习之路(八)页面

    传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...

  10. WPF学习之路(七)应用程序和窗口(续)

    窗口的生命周期 WPF中一个Window类代表一个窗口 一个的窗口的生命周期也有好几个阶段: 1.构造器被调用 2.Window.Initialized事件被触发 3.Window.Activated ...

随机推荐

  1. block循环饮用解决

    在block中使用self会引起循环引用导致无法释放. 解决: __weak typeof(self) weakSelf = self; 例如: NSLog(@"init--> val ...

  2. eclipse中注释常用关键字

    关键词列表: @author 作者名 @date 日期 @version 版本标识 @parameter 参数及其意义 @since 最早使用该方法/类/接口的JDK版本 @return 返回值 @t ...

  3. Sublime Text 3 (Build 3126) 最新注册码

    Sublime Text 作为程序员开发神器,听说最新版更新了 并且增加了不少新特性.马上到官网下载了最新版 Sublime Text 3 3126 使用了下,反应速度比以前的确更快了.随手找了几个S ...

  4. 对spring,struts,hibernate及MVC的理解

    对于spring,hibernate,struts等框架,刚开始的时候总是会很迷茫,不知道他们是用来做什么的. 1.对框架的作用理解 个人认为框架的作用是把代码进行了分类,减少了代码的耦合性. 如果不 ...

  5. Express4.x动态的销毁或者替换中间件(app.unuse)

    需求描述 expres4.x托管静态资源时以中间件的方式将server-static挂载到app上,正常的使用没有问题,但是有时候我们需要动态的托管一些静态资源,也就是静态资源的目录不确定的时候该怎么 ...

  6. 使用ocupload和POI一键上传Excel并解析导入数据库

    使用的工具如下:  JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...

  7. Robot Framework自动化测试环境部署

    文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...

  8. MySQL优化四(优化表结构)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  9. Maven工具的使用总结

    Maven作为构建工具,现在项目开发使用的越来越多,相对于ant和gradle,我更喜欢使用maven,先总结maven使用的一系列知识: 一.maven相关的网址: 名称 地址 其他 maven官网 ...

  10. android studio 中的 gradle version

    刚开始接触AS,从geithub上download了好多项目,每一个都需要改动,对我这种新手来说,慢慢琢磨吧 问题一: 解决办法: 在build.gradle中,将gradle的版本改正如上图所示即可 ...