Welcome

首页 / 软件开发 / .NET编程技术 / 基础: 使用模板自定义WPF控件

基础: 使用模板自定义WPF控件2011-10-24 msdn Charles Petzold随着 Windows Vista™ 和 Microsoft® .NET Framework 3.0 的发布,出现了许多可供开发 人员学习、讨论和使用的新技术。新的工具、库和范例将改变构建托管应用程序的方法,带来了巨大的可 能性。 我们推出的这一新的每月专栏将介绍用于开发应用程序的基本技术。您所熟知的业内专家将轮番 与您探讨 Windows® Presentation Foundation、Windows Communication Foundation 和 Windows Workflow Foundation。我们开始吧。

在 Windows 中自定义现有控件通常需要四个步骤。首先需要有灵感。然后需要进行研究和探索。这一 过程难免会有困难。而最终发现需要完全重写。由于很难访问到将控件的可视部分与其功能相关联的代码 ,因而通常无法自定义控件。此代码对于控件至关重要,因此必须完全接受它,或者完全跳过并替换它。

Windows Presentation Foundation(作为 .NET Framework 3.0 的一部分提供)的开发人员已经 不可避免地感受到了自定义控件的艰辛。他们提出了一个令人耳目一新的强大解决方案,我们称之为 “模板”。

Windows Presentation Foundation 模板不仅简单,而且功能强大,让我 能迅速理解其概念。我很快就理解了 Windows Presentation Foundation 样式(通常容易与模板混淆) ,但是模板需要我们花费更多的时间去了解。

Windows Presentation Foundation 中的每个具有 可视外观的预定义控件也都具有一个完全定义了其外观的模板。此模板是类型 ControlTemplate(设置为 由 Control 类定义的 Template 属性)的一个对象。

在应用程序中使用 Windows Presentation Foundation 控件时,您可以用自己设计的模板替换该默认模板。您可以保留控件的基本功能(包括所有 键盘和鼠标操作的处理),但您可以为其设置完全不同的外观。这就是在提到 Windows Presentation Foundation 控件时所说的“变脸”(不太文雅)的含义。控件都有默认外观,但是此外观并 不是固定地对应控件的内部功能。

用代码编写模板不太合适。而使用可扩展应用程序标记语言 (XAML) 进行编写会更容易,因为模板完全可以用 XAML 来表示,从而能够借助于可视化设计工具进行设 计。 如果您要编写像现有 Windows Presentation Foundation 控件一样工作但外观不同的自定义控件, 请立即停止!很可能仅使用一个模板即可得到这样的控件。

可下载的源代码包含七个独立的 XAML 文件,我将在整个专栏中进行讨论。在制作此专栏的过程中,未编译任何 C# 代码!如果您已安装 .NET Framework 3.0 SDK,则可以使用我的《Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation》一书中的类似程序 XAMLPad 或 XAML Cruncher 编辑这些文件。

Windows Presentation Foundation 支持用于显示控件内容的其他类型的模板,但本专栏将仅讨 论类型 ControlTemplate 的对象。