概述

Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序。使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序。一直以来,我对界面的东西是不怎么感兴趣的,可自从Windows Presentation Foundation (WPF)发布之后,也不免为它能实现的绚丽的界面所吸引,《一起学WPF系列》和大家一起分享学习WPF学习经验的系列文章。

本文是《一起学WPF系列》中的第二篇,也是从Hello Word开始吧。

本文目的:

学习WPF项目模板,创建一个最简单的Hello Word应用,体验WPF编程模型。

项目模板:

本系列文章默认情况下,开发环境为Vista + Visual Studio.Net 2008。有关开发环境的搭建问题,请访问:一起学WPF系列(1):磨刀不误砍柴工 。在搭建好开发环境之后,打开VS2008,选择创建项目(Create Project),出现如下图所示的选择项目模板的对话框:

从上面的图中可以看出vs2008有关WPF的项目模板(Project Template)包括:

模板名称

说明

WPF Application

使用WPF控件(WPF Control)和事件处理设计用户接口(User Interface)

WPF Browser Application

创建一个能在浏览器中运行的WPF应用程序

WPF Custom Control Library

用于创建自定义控件,自定义控件继承Control类,此模板中不能可视化设计

WPF User Control Library

用于创建用户控件,用户控件继承UserControl类,能可视化设计控件

其中自定义控件和用户控件的区别在以后的WPF架构中会加以说明,本文暂不追究。

创建第一个WPF应用程序

本文在一个解决方案中创建四个项目(Project),它们分别为:

项目名称

项目类型

说明

Jillzhang.Wpf.HelloWorld

WPF Application

实现最简单的Hello World的WPF应用程序

Jillzhang.Wpf.HelloWorldInBroswer

WPF Browser Application

实现最简单的Hello World的WPF应用程序,且该程序能在浏览器中 运行

Jillzhang.Wpf.CustomControl

WPF Custom Control Library

只创建自定义控件项目,不做更改

Jillzhang.Wpf.UserControlPrj

WPF User Control Library

只创建用户控件项目,不做更改

着重讨论Jillzhang.Wpf.HelloWorld和Jillzhang.Wpf.HelloWorldInBroswer的创建和开发过程。

Jillzhang.Wpf.HelloWorld

在项目模板选择对话框中选择WPF Application,修改项目名称(Name)为:Jillzhang.Wpf.HelloWorld,和存储位置(Location),点击 确定 (OK),便成功创建了一个WPF应用程序,模板中文件层次结构如下图所示:

其中包括四个重要的文件,有关它们的说明分别为:

文件名称

说明

App.xaml

Application的设置,通过此文件可以设置应用程序的起始文件和资源

App.xaml.cs

这个是App.xaml的后台文件,继承System.Windows.Application,用于描述WPF应用程序

Window1.xaml

一个WPF窗体的XMAL设计文件。

Window1.xaml.cs

Window1.xaml的后台文件,继承自System.Windows.Window,是WPF窗口的实现类

在App.xaml中,指定项目运行时启动的是窗体:Window1,代码如下:

在Window1.xaml中设计窗体的外观,本例中该窗体将窗体分为两行两列,上边一行用于窗体的说明,类似于Banner,而下面一行是一个按钮控件,点击这个按钮,出现Hello World的模式对话框。

首先,我们将窗体的标题更改为:一起学WPF系列(2):第一个WPF应用程序,方法是在xaml中设置Window的Title属性 。下一步来分割窗体来实现两行两列的布局,在WPF中我们可以很方便的布局,本文便利用Gird将整个窗体分为两行两列,代码为:

窗体布局
<Grid> 

<Grid.RowDefinitions> 

<RowDefinition Height="Auto"/> 

<RowDefinition Height="Auto"/> 

</Grid.RowDefinitions> 

<Grid.ColumnDefinitions> 

<ColumnDefinition Width="Auto"/> 

<ColumnDefinition Width="Auto"/> 

</Grid.ColumnDefinitions> 

</Grid> 

然后我们分别在第一行第一列中添加一个Logo,在第二行第二列中添加一个文本描述,在第二行中添加一个按钮,代码如下:

窗体元素
<Border BorderBrush="Aqua"> 

<StackPanel Orientation="Horizontal"> 

<Image Source=".\Resources\wpf.jpg" Stretch="None" Grid.Column="0" Grid.Row="0"/> 

<TextBlock Text="一起学WPF系列(2):第一个WPF应用程序" FontSize="18" Grid.Column="1" Margin="25,50,10,10"/> 

</StackPanel> 

</Border> 

<Button Content="点点我" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Height="50" Margin="5,5,5,5"/> 

此时可视化窗体效果为:

到此窗体布局已经完成,下面来添加按钮的点击事件,如图所示,在Button标签中加入Click:

点击New Event Handler,切换到后台.cs文件,别可以看到事件代码:

private void Button_Click(object sender, RoutedEventArgs e) 

{  


在Button_Click中添加MessageBox.Show("Hello World!"),我们的第一个WPF应用程序便大功告成了。看看运行效果吧:

完整的代码为:App.xaml和App.xaml.cs保持创建的时候不变。

Window1.xaml:

Window1.xaml
<Window x:Class="Jillzhang.Wpf.HelloWorld.Window1" 

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Title="一起学WPF系列(2):第一个WPF应用程序" SizeToContent="WidthAndHeight" 

WindowStartupLocation="CenterScreen"> 

<Grid> 

<Grid.RowDefinitions> 

<RowDefinition Height="Auto"/> 

<RowDefinition Height="Auto"/> 

</Grid.RowDefinitions> 

<Grid.ColumnDefinitions> 

<ColumnDefinition Width="Auto"/> 

<ColumnDefinition Width="Auto"/> 

</Grid.ColumnDefinitions> 

<Border BorderBrush="Aqua"> 

<StackPanel Orientation="Horizontal"> 

<Image Source=".\Resources\wpf.jpg" Stretch="None" Grid.Column="0" Grid.Row="0"/> 

<TextBlock Text="一起学WPF系列(2):第一个WPF应用程序" FontSize="18" Grid.Column="1" Margin="25,50,10,10"/> 

</StackPanel> 

</Border> 

<Button Content="点点我" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Height="50" Margin="5,5,5,5" Click="Button_Click"/> 

</Grid> 

</Window> 

Window1.xaml.cs

Window1.xaml.cs
using System; 

using System.Collections.Generic; 

using System.Linq; 

using System.Text; 

using System.Windows; 

using System.Windows.Controls; 

using System.Windows.Data; 

using System.Windows.Documents; 

using System.Windows.Input; 

using System.Windows.Media; 

using System.Windows.Media.Imaging; 

using System.Windows.Navigation; 

using System.Windows.Shapes; 

 

namespace Jillzhang.Wpf.HelloWorld 



/**//// <summary> 

/// Interaction logic for Window1.xaml 

/// </summary> 

public partial class Window1 : Window 



public Window1() 



InitializeComponent(); 



 

private void Button_Click(object sender, RoutedEventArgs e) 



MessageBox.Show("Hello World!"); 







而WPF在浏览器中的应用程序Jillzhang.Wpf.HelloWorldInBroswer的创建方法和Windows中的基本类似,只是将Windows更改为Page,其他的在本范例中大同小异,实现后的效果图为:

范例项目下载:

/Files/jillzhang/Jillzhang.Wpf.HelloWorld.rar

结束语

WPF博大精深,虽尽全力,也不能在短时间内就掌握其宗,其旨,作为初学者,我们只能先略懂其皮毛,然后逐渐深入,方能修成正果,本文从WPF项目模板出发,并创建了一个十分简单的WPF应用程序,并且搭配WPF浏览器应用,也算是管中窥豹,可见一斑了。唯一的希望就是能给大家的学习带来一点点参考,便足以欣慰了。

转载于:https://www.cnblogs.com/jillzhang/archive/2008/04/05/1138015.html

一起学WPF系列(2):第一个WPF应用程序相关推荐

  1. NHibernate从入门到精通系列(3)——第一个NHibernate应用程序

    内容摘要 准备工作 开发流程 程序开发 一.准备工作 1.1开发环境 开发工具:VS2008以上,我使用的是VS2010 数据库:任意关系型数据库,我使用的是SQL Server 2005 Expre ...

  2. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!

    ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学,你就是下一个大佬❤️! 前言 程序说明 数据爬取 获取 CSDN 作者总榜数据 获取收藏夹列表 获取收藏数据 爬虫程序完整代码 ...

  3. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽 ...

  4. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding. 这一点可以通过设置bindi ...

  5. WPF系列:GridView列绑定控件(一)

    最近,在WPF方面的UI设计,设计很多控件的绑定和布局,因为刚开始学习,所以,有很多东西不是很懂,一边在网上搜,一边试着做,因为设计到在GridView中绑定控件,所有,在网上搜了搜,看了一篇很好的帖 ...

  6. 贫民窟里的WPF系列讲座(一)

    最近讲了一套完整的WPF课程,感觉教学效果还很不错.我准备给MSDN录15期左右的事情,这几篇文章是配合视频一起来看的.我相信大家都是很喜欢研究新技术的,但是研究新技术的时候会遇到很多困难,譬如书籍的 ...

  7. 为 Revit API 插件创建 WPF 窗口的基本项目(Revit API+WPF 系列 2/3)

    在本系列的第二部分中,我们将讨论在创建 WPF 窗口时应用的基本项目. 为了继续,请确保您的插件项目能够创建 WPF 窗口.如果没有,您最好创建一个具有 WPF 功能的项目模板并创建另一个新项目.然后 ...

  8. prism项目搭建 wpf_Prism完成的一个WPF项目

    本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...

  9. DispatcherCore ,一个WPF异步操作常用功能库

    在WPF开发中,经常遇到跨线程的问题,以及频繁使用跨线程操作UI线程中的界面元素,一些COM组件操作也是必须在UI主线程中使用,否则就会抛出各种无法访问的错误.是否有遇到过呢?为了解决各种跨线程访问的 ...

最新文章

  1. 晨风机器人php接口程序_AuthorizationSystem
  2. Maven和Gradle对比
  3. Ubuntu 16.04下Caffe-SSD的应用(八)——处理标注好的VOC2007数据集
  4. boost::math::relative_difference相关用法的测试程序
  5. mysql 主从复制讲解_MySQL主从复制详解
  6. SLAM: 单目视觉SLAM的方案分类《机器人手册》
  7. googleearthpro打开没有地球_嫦娥五号成功着陆地球!为何嫦娥五号返回时会燃烧,升空却不会?...
  8. CCF201612-2 工资计算
  9. java安装教程详细
  10. php微信网页授权获取用户基本信息,微信网页授权获取用户基本信息
  11. 用python编写猜数字游戏
  12. 高仿QQ游戏大厅-支持换肤和控件切换动画
  13. py使用pie绘制饼图或圆环图
  14. python_并发编程
  15. C++ Opencv 实现Canny算法
  16. 农产品销售系统的设计与实现
  17. 通用技术课件_优化—让我们做得更好 | 高中通用技术优质课展示
  18. 三国群英传霸业之王服务器维护,20190723维护公告
  19. 北海450值得入手吗?附带(越野萝莉)照片
  20. java过滤器python是啥_过滤器如何在python中使用softlayer API

热门文章

  1. css新闻列表优化-突破思维新方法更利于搜索引擎
  2. Global.asax
  3. 对称加密和非对称加密
  4. flask url构建_如何为生产构建构建Flask-RESTPlus Web服务
  5. android 模板方法模式,安卓设计模式(七)模板方法模式
  6. mysql字符串外键约束_MySQL中的约束函数主外键
  7. Python的range()函数
  8. (C++)对用户输入的整形数组进行冒泡排序
  9. 软件测试培训分享:性能测试的目的是什么
  10. 选择python培训机构的关键考核五大因素,让你永不吃亏!