开发准备
WPF编程是微软推出的打破GUI编程旧模式的创新技术。全称为WINDOWS PRESENTATION FOUNDATION。开发工具建议使用Visual Studio 2008 Team System。语言建议使用C#。WPF可以更方便的开发更漂亮的界面,并且可以比以前更好地将GUI设计和程序逻辑分离开来,使得有条件的公司可以专门培养平面设计人员进行GUI设计(有点类似于与网页美工),而程序员更加关注业务逻辑。
一个简单的示例开始
创建一个WPF工程,工程名为Demo。
请注意图中灰色区域,那是一个XAML文件,如果不用VS2008图形化设计工具,光写XAML文件,我们也可以设计出GUI界面来。理解XAML的一些基本知识很重要,但是还是推荐使用图形化设计工具来工作,毕竟谁都想生活轻松点。
这个工程新建好了以后,就创建了一个窗口应用程序。现在只有一个窗口而已,窗口标题为默认的Window1。下面是运行的结果:
理解XAML
XAML全称为Extensible Application Markup Language 。XAML可以用来编写WPF,但是也可以做很多其他的事情。每个WPF程序都有一个Application对象,该对象代表了整个应用程序,它总是有一个static Main方法。如何编写一个Application类有多种方法,可以参考 http://www.cnblogs.com/kuku/archive/2007/02/09/645623.html 。但是这篇文章写得较早,最新的VS2008有些变化。所以下面我说明一下,App.xaml内容如下:<Application x:Class="Demo.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
</Application.Resources>
</Application>
Application元素的x:Class属性的值为Demo名字空间里面的类App。该类的定义如下:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace Demo
{
///
/// Interaction logic for App.xaml
///
public partial class App : Application
{
}
}
我们并不需要写static Main方法,估计编译器替我们生成了。 App.xaml中的Application元素还有一个属性StartupUri指定了应用程序开始运行时显示的第一个窗口Window1。Window1.xaml文件内容如下:
<Window x:Class="Demo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
</Grid>
</Window>
这个应该比较容易懂,除了指定Demo.Window1为窗口类以外,还指定了Title,Height,Width属性的值。Window1类的代码如下:
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 Demo
{
///
/// Interaction logic for Window1.xaml
///
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}
}
Window1继承了System.Windows.Window类。InitializeComponent()方法的主要作用是读取Window1.xaml文件中指定的Window元素的属性值。代码如下:
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {