《Programming WPF》翻译 第3章 1.什么是控件

对于一个应用程序而言,控件是搭建用户界面的积木。它们具备交互式的特征,例如文本框、按钮以及列表框。尽管如此,WPF还有点不寻常,在于其并不直接地依赖其外观。在自定义一个控件外观时,很多GUI框架要求设计人员编写一个自定义控件。在WPF中,这是不必要的:嵌入式内容和模板提供了简单而强有力的解决方案。仅当你所需要的控件,其行为在已有嵌套式控件中不存在时,才需要重新去开发。

很多WPF用户界面元素并不是控件。例如一些形状:RectangleEllipse,它们不具有内在的行为,仅仅是一个外观。

3-1示了如何将一个控件适合于一个程序。正如你所看到的,控件的可见部分,是由其模板提供的,而不是控件本身。这个控件并不完全分离于其外观,当然,控件使用这些外观向用户提供信息。此外,由于这些外观是用户所能看到的全部,所以它们将是任何用户输入的即时目标。这意味着虽然这些外观可以被替换,这些替换具备特定的职责。在控件与其外观之间存在一种契约方式。模板,用来替换控件的外观,其使用将在第5章讨论。

3-1


你可能熟悉MVCModel View Controller)概念。这是设计交互式系统的一种方式。以往,MVC已经有若干种阐释方式。但是广泛地说,它经常将设计拆分为:表示底层数据的对象(Model),展示数据的对象(View),管理用户输入以及管理View交互的对象(Controller)。

尽管控件通过外观使其自身对用户可见,通过API(见图3-1左)使其服务对开发者有效。控件提供了命令这个概念,来提供其支持的操作。例如,一个文本框提供了剪切、复制和粘贴命令。控件提供了属性这个概念,从而提供了一种修改行为或外观的方式。当有重要情况发生时,例如接收到外界的输入,控件会激活Event。最后,一些功能通过Method对外暴露。要优先选择命令、属性和事件,因为它们易于在标记语言中使用而且被一些设计工具支持。尽管如此,仍然存在一些情况,这些控件要在后台代码中使用,方法这时候就是最合适的API表现形式。

当然,开发人员和设计人员并不是仅有的使用控件的人。控件同时要响应用户,所以,让我们看一看,在WPF中,输入是如何被处理的。

posted @ 2008-04-04 13:05  包建强  Views(1597)  Comments(2Edit  收藏  举报