《Programming WPF》翻译 第3章 1.什么是控件
原文:《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中,输入是如何被处理的。
《Programming WPF》翻译 第3章 1.什么是控件的更多相关文章
- 《Programming WPF》翻译 第3章 3.内嵌控件
原文:<Programming WPF>翻译 第3章 3.内嵌控件 WPF提供了一系列内嵌控件.其中大多数符合标准的你已经熟悉的Windows控件类型.注意到没有一个是包装在旧的Win32 ...
- 【WPF学习】第二十四章 基于范围的控件
WPF提供了三个使用范围概念的控件.这些控件使用在特定最小值和最大值之间的数值.这些控件——ScrollBar.ProgressBar以及Slider——都继承自RangeBase类(该类又继承自Co ...
- WPF教程十一:简单了解并使用控件模板
WPF教程十一:简单了解并使用控件模板 这一章梳理控件模板,每个WPF控件都设计成无外观的,但是行为设计上是不允许改变的,比如使用Button的控件时,按钮提供了能被点击的内容,那么自由的改变控件外观 ...
- 【风马一族_Android】第4章Android常用基本控件
第4章Android常用基本控件 控件是Android用户界面中的一个个组成元素,在介绍它们之前,读者必须了解所有控件的父类View(视图),它好比一个盛放控件的容器. 4.1View类概述 对于一个 ...
- 【ALearning】第三章 Android基本常见控件
本章主要介绍主要的寻常较多使用的控件,包含TextView.EditView.ImageView.Button等.本章将介绍相关控件基本属性的使用,为以后章节的进阶学习提供基础.案例中引用的Linea ...
- WPF中, 启用添加到RichTextBox中的控件
原文:WPF中, 启用添加到RichTextBox中的控件 WPF中, 启用添加到RichTextBox中的控件 ...
- WPF编程,通过Double Animation动态旋转控件的一种方法。
原文:WPF编程,通过Double Animation动态旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...
- WPF编程,通过Double Animation动态更改控件属性的一种方法。
原文:WPF编程,通过Double Animation动态更改控件属性的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/a ...
- WPF编程,通过Double Animation动态缩放控件的一种方法。
原文:WPF编程,通过Double Animation动态缩放控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/art ...
随机推荐
- linux虚拟机命令行模式下,某些命令显示乱码问题。
刚安装了linux虚拟机,使用vi命令试着修改IP配置,结果出现乱码.配置IP的文件内容本身没有乱码,主要是vi编辑的命令行的提示出现乱码,例如,按i是插入模式,结果底下出现乱码提升,不是提示插入. ...
- 【绿茶书情】:《SOHO小报》和《凤… - 绿茶的日志 - 网易博客
[绿茶书情]:<SOHO小报>和<凤- - 绿茶的日志 - 网易博客 [绿茶书情]:<SOHO小报>和<凤-
- css如何使背景图片水平居中
CSS中定位背景图片的属性是:background-position,用法background-position 属性设置背景图像的起始位置. 你要水平居中可以: div{background-pos ...
- PHP设计模式笔记三:三种基本设计模式(工厂模式、单例模式、注册树模式) -- Rango韩老师 http://www.imooc.com/learn/236
一.工厂设计模式 index.php $db = IMooc\Factory::createDatabase(); 使用工厂类的静态方法直接创建一个dababase对象,当类名发生修改时,在工厂里修改 ...
- maven plugin在tomcat 热部署
前言: 此处的方法适用于tomcat6 和 tomcat7,对于最新的tomcat8还没有进行过測试,有兴趣的同学能够自己測一下. 总共分为五步: 1.在tomcat中配置用户权限,即 ...
- Zedboard甲诊opencv图像处理(四)
接着上一篇博客,继续改进,现在为了是图像处理结果更加稳定,我实在没有办法了,只好先提取手指,再提取指甲. 把手指从背景里面提出来还是挺简单的,可惜的是我研究这么半天还是这结果,好沮丧. 怎么办呢,时间 ...
- Ubuntu 10.04下安装Opengl glx
1.安装OpenGL Library sudo apt-get install build-essential 2. 安装OpenGL Utilities sudo apt-get install l ...
- Android 自定义UI--电池
首先看一下效果图, 下面看代码: /** * */ package com.example.batterydemo; import android.content.Context; import an ...
- Android-IM架构设计
###1. 架构总览 ###2. 模块介绍 ####2.1 协议封装与任务流程 #####1) 协议与任务的封装 a. 协议有协议头(协议头因为格式相同,被抽象出来)和协议体组成,协议有两类:请求协议 ...
- using 关键字给类和名称空间指定别名
1. using System; using System.Text; namespace DLL { public class Class1 { public void showStr() { Co ...