跳转到内容

Introduction to .NET Framework 3.0/Windows Presentation Foundation

From Wikibooks, open books for an open world

Windows Presentation Foundation (代号:Avalon) 是 .NET Framework 3.0 中引入的一项新功能(一个演示平台),它支持创建包含高分辨率图片和图形的文档。WPF 还负责将图片和媒体集成到普通文档中。目前,执行此功能的组件是 Windows 窗体。

什么是 Windows Presentation Foundation
[编辑 | 编辑源代码]

一种高效、统一的 UI、媒体和文档方法,可提供无与伦比的用户体验

WPF 基础架构

[编辑 | 编辑源代码]

Presentation Foundation 包含用于创建“打印”和“打开文件”对话框、编写新窗口等的类。它大多数时候使用四个特定的类

  • UIElement
  • FrameworkElement
  • ContentElement
  • FrameworkContentElement

这些类有助于构建有效且易于使用的用户界面。WPF UI 通常以元素树的形式存在。WPF 中使用的元素树有两种类型

  • 逻辑树
  • 视觉树

元素树通常在 XAML 中通过拖放和创建相关元素之间的关系来实现。在代码中,它们取决于我们如何为属性提供属性值。

逻辑树涉及通过添加 listbox 标记并在标记内添加列表项来创建树结构。在 DockPanel 的情况下,我们使用 Children 属性。

视觉树主要由想要干预程序底层低级组件的程序员使用。

标记和编程的结合

[编辑 | 编辑源代码]

虽然建议使用 C# 等编程语言进行编程逻辑,但建议使用标记语言进行文本和 UI 编程。

在早期版本的 .NET 框架中,设计器部分与代码是分开的。但是,在 .NET 3.0 中,用 XAML 编写的设计器部分和用 C# 编写的逻辑都包含在同一个代码中。

XAML File
<Canvas ID="root“ xmlns="http://schemas.microsoft.com/2003/xaml“>
	<Button Click="Button_Click">Click Me!</Button>
</Canvas>

C# code-behind file 
using…
namespace Button
{
	public partial class Default : Panel
	{     // Event handler
		   void Button_Click (object sender, System.Windows.Controls.ClickEventArgs e)
 	       {    btn1.Background = System.Windows.Media.Brushes.Red;  }
	}
}

Windows Presentation Foundation 使用户能够创建高质量的图形应用程序。您可以使用 <button> 标记添加现有或创建自定义按钮,创建停靠面板、二维和三维图形图像,使用颜色选择器控件,创建或修改图像、视频,创建自定义媒体播放器等。

绘图对象模型

[编辑 | 编辑源代码]

WPF 图形系统提供了一种全新的编程风格。使用基于 Win32 的 UI 技术,如果您想要绘制自定义图形,则必须编写代码以响应重绘请求,按需绘制详细信息。此代码有效地直接绘制到屏幕上。如果屏幕的该部分被另一个窗口遮挡,然后再次显示,Windows 会发送一条消息请求重绘此部分。如果您想要更改图形的外观,则需要指示 Windows 使屏幕的相关区域无效,以启动重绘。

富文本格式

[编辑 | 编辑源代码]

WPF 还帮助我们轻松创建格式化文本,因此可以使用富格式。内容包含在 <textblock> 标记中。

用户事件可以使用触发器轻松执行,触发器使用 <trigger> 标记指定。除此之外,WPF 中还有许多其他新创新。

模板和样式

[编辑 | 编辑源代码]

模板有两种类型:数据模板控件模板。控件模板定义控件的视觉结构。

语法

ControlTemplate x:Key=“MyButton” TargetType=“{x:Type Button}”>
    <Grid>
        <Ellipse />
        <ContentPresenter />
    </Grid>
</ControlTemplate>

相反,数据模板包含有关要存储数据的规范。


语法

<DataTemplate DataType=“{x:Type PhotoObject}”>
    <Image Source=“{Binding FileName}” />
</ControlTemplate>

样式用于指定所用按钮的样式。

<Style x:Key=“MyStyle” TargetType=“{x:Type Button}”>
</Style>

样式也可以基于其他样式。

Style x:Key=“MyStyle” BasedOn=“{StaticResource BaseStyle}” />
    <Setter Property=“Background” Value=“Green” />
</Style>

WPF 支持三种文档

  • 固定文档
  • 流文档
  • XPS 文档


WPF 引入了新概念,使文本与媒体文件的集成更加容易。WPF 还支持早期版本不支持的各种字体。

固定文档

[编辑 | 编辑源代码]

固定文档代表 WYSIWYG(“所见即所得”)原则。在这里,您在屏幕上看到的内容表示页面打印时在纸上获得的实际版式。因此,即使是对版式的轻微更改也至关重要。

流文档

[编辑 | 编辑源代码]

流文档是根据屏幕大小调整其大小、可读性、尺寸等的文档格式。WPF 也支持此类文档。

XPS 文档

[编辑 | 编辑源代码]

XPS 文档是文档在纸上外观的精确表示。它们类似于文档本身的扫描图像。

  • 易用性 - 学习能力、性能、可靠性、安全性、优化形式因素、可读性、相关性/情境化。
  • 丰富性 - 图形和媒体、数据可视化、更高保真度信息、全球化、可访问性、硬件和打印集成。

参考资料

[编辑 | 编辑源代码]
  1. http://msdn2.microsoft.com/en-us/windowsvista/aa905016.aspx#Understanding%20Windows%20Presentation%20Foundation:%20Essential%20Concepts
  2. http://msdn2.microsoft.com/en-us/library/aa970268.aspx#Windows_Presentation_Foundation_Applications
  3. http://www.dotnet-u.com/
华夏公益教科书