WPF的一个优势在于,不必像其他用户界面框架那样要经常写自定义控件。如果你需要自定义一个已有控件的外观或者调整其表面的交互式行为,WPF提供各种各样的工具让你可以做到这些。在前面一些章节,我们已经看到了一些特色,如兼容性,内容模型,样式,模板,动画,以及集成的图像支持。这些可以让你广阔地定义已有控件而不用编写一个新的控件类型。
当然,自定义控件仍然占有地位。正如我们在第3章看到的,控件的角色是定义一个基本的行为。当你尽兴的定义一个按钮外观并为之添加动画的时候,它仍然保持其本质——可点击的能力。如果你需要的行为并没有被已有控件提供,同时不能通过将一些控件
放在一起的方式创建,这时你需要编写一个自定义的控件了。
如果你希望自己的控件是可复用的,你可能需要它具有和那些内嵌控件提供的一样的弹性,正如富文本,样式和模板所提供的支持。在这一章,我们将要看到如何利用内嵌控件同样强大的弹性,制作自定义控件。