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

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

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

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

图3-1





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

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

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

最新文章

  1. git用法之常用命令
  2. 在windows上搭建react-native的android环境
  3. Elasticsearch聚合 之 Date Histogram聚合
  4. Hibernate连接mysql数据库并自动创建表
  5. PHP 可变长度参数列表
  6. bootstrap学习笔记<五>(表单一)
  7. 转载:solr MoreLikeThis的原理分析
  8. Eclipse+GitHub
  9. asp.net生成二维码的方法
  10. 【POJ】1035 Spell checker
  11. SSAS-时间维度的标准设计
  12. html5的video标签支持的视频格式
  13. android 中文 api (72) —— BluetoothSocket[蓝牙]
  14. Myeclipse 10 for mac 破解版下载安装及破解方法
  15. 二.创建maven工程及下载需要的jar包
  16. webpack打包速度和性能再次优化
  17. React从入门到放弃之前奏(5):ReactRouter4
  18. iscroll.js实现上拉刷新,下拉加载更多,应用技巧项目实战
  19. react 入坑之罪
  20. 华为机试001:字符串最后一个单词的长度(华为OJ001)

热门文章

  1. QTabWidget添加自定义样式
  2. Qt信号和槽的个人总结
  3. AIR检测网络
  4. Hadoop集群上使用JNI,调用资源文件
  5. 编程:C#调用Python模块
  6. redis 学习笔记二 (简单动态字符串)
  7. WebService--使用 CXF 开发 REST 服务
  8. QlikView实现部分载入数据的功能(Partial Load)
  9. Centos7安装Oracle JDK
  10. Android开发环境的搭建之(一)Java开发环境的安装