声明性定义的控件动作的制作方法

文档序号:6568904阅读:186来源:国知局
专利名称:声明性定义的控件动作的制作方法
声明性定义的控件动作些旦 冃足计算机软件应用程序越来越多地用声明方式来开发以简化开发过程。在用户 界面和应用程序开发框架中,逻辑和非用户界面行为被构建到用户界面组件内以扩 展与用户界面组件相关联的控件属性。非用户界面行为可被构建到用户界面组件的 成分中。合成控件可能相当巨大,且具有用户难以修改来适合不同需求的众多不同 属性。属性的巨大数目使得控件的定制复杂化了,因为用户可能不会熟悉所有相关 联的属性。对象模型变得膨胀,使得当在表单中包括控件时,用户将会被控件所提 供的功能淹没。概述利用可扩展控制设计框架来声明性地定义控件(视觉和非视觉的)和其他组 件。控件的功能可通过经由被称为动作的对象声明性地添加行为和语义来扩展。控 件不会因行为和语义的添加而变得过度复杂。动作对象封装良好定义的功能,并与 现有的控件相关联。动作对象也与事件某种其他触发器相关联,从而在事件发生时 使功能自动执行。功能可在独立应用程序组件中打包,使得不熟悉编程代码的用户 可容易地在设计环境中为应用程序定义逻辑和功能。提供该概述是为了以简化的形式介绍将在以下在详细描述中进一步描述的一 些概念。该概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在用 于帮助确定所要求保护的主题的范围。附图简述

图1是示出在本发明的各个实施例中利用并由其提供的计算机系统的计算机 系统体系结构示意图。图2是实现声明性定义的控件的示例应用程序组件。 图3是实现声明性定义的控件的示例应用程序组件。 图4是实现声明性定义的控件的示例应用程序组件。图5是实现声明性定义的控件的示例应用程序组件。图6是示出用于声明性定义控件动作的过程的操作流程图。图7是示出在控件设计器中如何实现控件设计框架的示例代码。图8是示出基本控件如何能够提供声明性定义控制动作的功能的示例代码。详细描述本公开的各个实施例将在下文中参考附图更详细地描述,附图构成了本公开 的一部分,并通过说明示出了用于实现本发明的特定示例性实施例。然而,本发明 可体现为众多不同的形式,且不应被解释为限于此处所述的实施例;相反,提供这些实施例使得本公开将是充分且完整的,且将向本领域的技术人员全面传达范围。 本公开可被实现为方法或设备等。从而,本公开可采取完全硬件实施例、完全软件 实施例、或组合软件和硬件方面的实施例的形式。以下详细描述从而不应以限制的 含义解释。现在参考附图描述本发明的各方面,其中相同的编号表示相同的元素。具体 地,图1和相应讨论旨在提供对其中可实现本发明的各实施例的合适的计算环境的 简要一般描述。虽然在服务器和个人计算机上执行的程序模块的一般环境中描述了 本发明,但是本领域的技术人员将认识到本发明也可以结合其他类型的计算机系统 和程序模块实现。一般而言,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、 程序、对象、组件、数据结构和其他类型的结构。此外,本领域的技术人员将理解 本发明可以使用其他计算机系统配置来实现,包括手持式设备、多处理器系统、基 于微处理器或可编程消费电子产品、小型计算机、大型计算机等。本发明也可以在 通过通信网络链接的远程处理设备执行任务的分布式计算环境中实现。在分布式计 算环境中,程序模块可以位于本地和远程存储器存储设备中。说明性操作环境现在参考图1,将描述在本发明的各实施例中使用的计算机100的说明性计算 机体系结构。图1中所示的计算机体系结构示出了常规的台式或膝上型计算机,包 括中央处理单元110("CPU")、系统存储器120(包括随机存取存储器122("RAM") 和只读存储器("ROM" ) 124)、以及将存储器耦合至CPU 110的系统总线130。 包含诸如在启动时帮助在计算机内的各元件之间传送信息的基本例程的基本输入/输出系统储存在ROM 124中。计算机100还包括用于存储操作系统142、应用程 序和其他程序模块的大容量存储设备140,这将在下文中作更详细的描述。大容量存储设备140通过连接到总线130的大容量存储控制器(未示出)连 接到CPU 110。大容量存储设备140及其相关联的计算机可读介质为计算机100 提供了非易失性存储。虽然此处所包含的计算机可读介质的描述指的是诸如硬盘或 CD-ROM驱动器的大容量存储设备,但本领域的技术人员应该理解计算机可读介 质可以是可由计算机IOO访问的任何可用介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算 机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据 等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算 机存储介质包括但不限于RAM、 ROM、 EPROM、 EEPROM、闪存或其它固态 存储器技术、CD-ROM、数字多功能盘("DVD")或其它光盘存储,磁卡带、 磁带、磁盘存储或其它磁性存储设备,或是可以用来储存所需信息并可由计算机 100访问的任何其它介质。根据本发明的各实施例,计算机100可以使用通过诸如因特网的网络150到 远程计算机的逻辑连接在网络化环境中操作。计算机100可以通过连接到总线130 的网络接口单元160连接到网络150。网络接口单元160也可用于连接到其他类型 的网络或远程计算机系统。计算机100也可以包括输入/输出控制器170,用于从多 个其他设备包括,键盘、鼠标或电子指示笔(在图l中未示出)接收和处理输入。 类似地,输入/输出控制器170可以提供到显示器屏幕、打印机或其他类型的输出 设备的输出。如上简述,多个程序模块和数据文件可以被存储在计算机100的大容量存储 设备140和RAM 122中,包括应用程序148和适用于控制联网的个人计算机的操 作的操作系统142,诸如华盛顿州雷德蒙市的微软公司的WINDOWS XP操作系统。 大容量存储设备140和RAM122也可以存储一个或多个程序模块。具体地,大容 量存储设备140和RAM 122可以存储Web浏览器应用程序144。 Web浏览器应用 程序144可用于请求、接收、呈现和提供与诸如使用HTML格式化的网页146的 电子文档的交互。根据本发明的一个实施例,Web浏览器应用程序144包括来自 微软公司的INTERNET EXPLORER Web浏览器应用程序。然而,应该理解也可以 使用来自其他制造商的其他Web浏览器应用程序来体现本发明的各方面,诸如来 自MOZILLA FOUNDATION的FIREFOX Web浏览器应用程序。声明性定义的控件动作利用可扩展控件设计框架来声明性地定义控件(视觉和非视觉的)和其他组 件。控件的功能可通过经由被称为动作的对象声明性地添加行为和语义来扩展。控 件不会因行为和语义的添加而变得过度复杂。动作对象封装良好定义的功能,并与 现有的控件相关联。动作对象也与事件某种其他触发器相关联从而在事件发生时使 功能自动执行。功能可在独立应用程序组件中打包,使得不熟悉编程代码的用户可 容易地在设计环境中为应用程序定义逻辑和功能。框架简化了快速应用程序开发(RAD)。设计人员可使用视觉设计表面来选 择和放置应用程序组件。应用程序组件可使用该视觉设计表面来连接。应用程序组 件也可通过编写用于处理事件和执行与事件该相关的操作的代码用属性来定制。可在事件发生时自动调用应用程序组件。框架适用于其他设计环境,包括web设计、基于脚本的编程、基于表单的编程等。参考与按钮控件相关联的点击事件来解释控件设计框架。应理解,尽管此处 所述的实施例在与按钮控件相关联的点击事件的上下文中呈现,但可利用在控件界 面上定义的任何事件或触发器。控件设计框架将控件功能打包成组件。使用声明性动作和行为使组件相关联。图2示出了实现声明性定义的控件的示例组件。开发员可创建登录组件200作为具 有各个文本框控件210、 212和按钮控件220的表单上的合成控件。登录组件200 内的每一控件是表单上可单个访问使得控件可被定制和重新放置的独立实体。用户 可在文本框210、 212中输入值,并点击按钮控件220。在按钮控件220处发生的 点击事件与登录方法230相关联。登录方法230包括用于声明性定义控件的示例代码。当与按钮控件220相关 联的点击事件发生时,登录方法230从文本框210、 212采集值。登录方法230对 值执行逻辑,且根据登录逻辑操作的结果(例如,登录被准许或拒绝)来更新用户 界面。控件设计框架允许声明性地定义不同的应用程序场景而无需为每一特定场景 创建定制控件。参考登录方法230中的示例代码,在无需登录控件的情况下实现了 登录场景。用诸如两个文本框240、 250和按钮260的控件定义了登录组件200。 文本框240、 250和按钮260可独立定制和重新放置,因为控件不限于特定表单结 构。每一文本框240、 250具有相关联的文本属性265、 270 (例如,name (名字)、password (口令)),且按钮260与文本属性275 (例如,Click me (点击我)) 相关联。按钮260与ClickActions (点击动作)280相关联。ClickActions 280包括 LoginAction (登录动作)285。 LoginAction 285是可被定制的登录组件(例如name 和password)。LoginAction 285在点击事件发生时被自动触发,因为LoginAction 285 被包括在ClickActions 280中。声明性定义的登录组件200具有与由所编写代码定 义的登录控件相同的功能。声明性定义的控件受益于使用视觉设计表面上的块状控 件所添加的编程的灵活性。如有必要,开发员还可在视觉设计表面上定制控件。图3示出了控件设计框架如何将附加行为附连于控件。参考用户界面300上 的按钮310描述附加行为的附连。用户界面300也可包括供用户输入数据值的文本 框305。文本框305可被归组(例如,多个文本框305可被归组并被命名为"Group 1 (组l)")。按钮310与属性扩展方法320相关联。属性扩展方法320定义了带有文本属性340的简单按钮控件330。当点击按钮 310时发生了点击事件(例如,ValidationAction (确认事件)350、 CounterAction (计数器事件)360和WorkflowAction (工作流动作)370)。应用程序语义可按照可扩展的方式被附连于按钮310,使得可容易地改变控件 属性。控件属性可按配置触发或调用任何应用程序逻辑(命令性或声明性)。例如, 当点击按钮310时,ValidationAction 350、 CounterAction 360和WorkflowAction 370 均可被执行。当点击按钮310时,ValidationAction 350确认文本框305中的数据值 在用户界面300中被标识为Groupl。 CounterAction 360保存点击按钮310的次数 的计数。当点击按钮310时,WorkflowAction 370开始或恢复执行与应用程序(诸 如工作流)相关联的任何逻辑(命令性或声明性的)。因此,在无需使现有的对象 模型复杂化或要求创建新的对象模型情况下,附加的属性被声明性地附连于按钮 310。图4示出了控件设计框架如何向控件提供可发现性和强类型方式。FormView (表单视图)控件与来自数据库行的内容相关联。与FormView控件相关联的按钮 控件对该行执行数据库操作。例如,"Update(更新)"按钮可如下所示与Form View 控件相关联<asp:Button CommandName="Update,7>其中"Update"是串属性。FormView控件特别地搜索被称为"Update"的命令。当点击按钮时,执行更新逻辑。然而,在当前的控件框架中,更新逻辑不能被发现。换言之,在程序中使用FormView控件的开发员可能没有意识到与FormView控件相关联的子命令。此 外,不清楚命令是否是大小写敏感的。例如,FormView控件可特别地搜索"Update", 使得"update"会导致出错并可能被忽略。而且,打字错误会使表单失败。例如, 如果搜索"Updatel"而非"Update",则当点击按钮时,更新逻辑可能不会被执 行。己知的控件编程框架要求用户扫描代码来找出打字错误。控件设计框架向编程控件提供强类型方式。术语"强类型"指的是方法和类 成员变量的显式命名和类型定义。数据的类型在编译时已知,因此,允许在编译时 而非在运行时解决不正确的数据类型分配,从而节省了处理能力并减少了代码中有 错误的几率。控件设计框架也提供若干内建动作。如上所述,第三方和应用程序开 发员可开发特定场景专用的新动作。这些动作应可为控件设计器发现,不熟悉新定 义的动作的其他用户将不会知道它们的存在。参考用户界面400上的按钮410描述可发现性和强类型方式。用户界面400 也可包括供用户输入诸如"item (项目)"的数据值的文本框405。按钮410与可 发现性和强类型方式方法420相关联。可发现性和强类型方式方法420定义了 FormView控件430和带有文本属性445的简单按钮控件440。开发员不需要知道FormView控件430所使用的特定串集合。相反,相关联动 作的对象模型提供该信息。按钮控件440不包括命令名。按钮控件440包括与按钮 控件440相关联的ClickActions 460内的FormViewAction (表单视图动作)450。 FormViewAction 450包括Operation (操作)="Edit (编辑)"属性470。 Operation ="Edit"属性470是枚举类型(而非串),使得该属性与固定的一组值(例如, 编辑、删除、更新等)相关联。枚举类型允许编辑器和解析器为枚举施加有效值。 例如,开发员可键入"Operation="。然后可显示具有枚举的不同值的下拉菜单 480,使得用户可选择一有效值。因此,开发员可发现与控件相关联的子命令。当开发员键入属性470时可能会输入打字错误。例如,开发员可能键入了 "Editl"或"edit"而非"Edit"。当解析页面时,"Editl"导致解析器错误,因 为"Editl"是未知值。如果搜索函数的大小写敏感的,则"Edit"也会导致解析器 错误。如果该值是串,则错误不会产生。相反,在按钮410处发生的点击事件不会 产生任何动作。因此,枚举类型属性是移除因开发员误打引起的一类错误的强类型 值。图5示出了可如何使用控件设计框架来对控件施加效果。用户界面500被配置成接收输入来执行搜索。文本框510被配置成接收搜索词。用户可点击搜索按钮520来启动搜索。结果被显示为面板530上的搜索列表。搜索按钮520可与施加效果方法540相关联,使得当搜索列表在面板530上 显示时可对其施加效果。例如,可对诸如搜索列表的目标对象560施加诸如 FadelnEffect 550的淡入动画效果。当搜索列表在面板530上显示时,搜索列表淡 入。FadelnEffect 550包括由点击事件580调用的播放方法570。点击事件580也将 属性590附连于面板530,使得面板530变为可见。当点击搜索按钮520时, FadelnEffect 550被施加于面板530,且面板530变为可见。因此,可通过调用方法 并定义特定目标来声明性定义一方法。图6是示出用于声明性定义控件动作的过程的操作性流程图。该过程开始于 起始操作,在那里配置一控件来执行一函数。处理继续至操作600,在那里一动作与一控件相关联。例如,控件可以是按钮 控件、文本框控件或表单视图控件。该动作封装了行为和语义,以便扩展控件的功 能。该动作是独立的应用程序组件,使得控件不会在该动作与该控件相关联时变得 过度复杂。独立应用程序组件允许将该动作定义为应用程序设计环境中的构建块。 开发员可通过装配构建块为应用程序定义逻辑和功能来容易地开发一应用程序。在 一个实施例中,动作包括标识固定的一组值的枚举属性。该固定的一组值可在键入 该属性时向开发员显示。如果开发员误打了一属性值,则产生错误,因为误打的值 未被包括在该固定组中。在另一实施例中,可将一个以上的控件与动作相关联。例 如, 一个动作可嵌套另一动作内。在又一实施例中,可将附加属性与该控件相关联。前进至操作610, 一事件与该控件相关联。例如,如果该控件是按钮,则相关 联事件可以是在该按钮处发生的点击事件。移动至操作620,该控件检测到相关联 事件将要发生。在一个实施例中,该控件检测到相关联的事件将在该控件处接收到 值时发生。转到操作630,该动作在该事件发生时被执行。该动作可通过对该值执行逻辑 运算来执行。执行动作的示例包括处理值、确认值、对事件发生的次数计数、开始 工作流的执行、恢复工作流的执行、发现与控件相关联的属性、在编译时解决不正 确的数据类型分配、对控件施加效果等。也可执行与该事件相关联的其他独立动作。在一个实施例中,重复该过程来 执行动作的序列。序列中的一个动作可被执行,并返回"假"值从而中断该动作序 列。处理然后在结束操作处终止。图7是示出如何在控件设计器中实现控件设计框架的一示例代码片段700。控 件设计器可经由任务面板为支持动作的控件自动提供动作编辑器。动作编辑器呈现 应用程序所引用的程序集中可用的该组动作。动作提供相关联的设计器功能以提供超出属性格的丰富编辑体验。示例代码片段700指示动作可在事件发生之前或之后执行。为所有控件动作提供基类。每一动作可指定动作是在事件发生之前还是之后 执行的。返回值对在事件发生之前执行的动作有意义。该动作可返回"真"来取消 事件的后续发生。可在定制回传行为时利用一动作。控件可调用实现用于与回传相 关事件相关联的动作的界面的动作。图8是示出基本按钮控件如何可提供用于声明性定义控件动作的功能的示例 代码片段800。以上说明书、示例和数据提供了本发明组成的制造和使用的完整描述。由 于可在不背离本发明的精神和范围的情况下进行本发明的众多实施例,因此本 发明驻留在所附权利要求书中。
权利要求
1.一种用于声明性定义控件动作的计算机实现方法,所述方法包括将一动作与一控件相关联(600),其中所述动作和所述控件是可独立定制的组件;将一事件与所述控件相关联(610);检测到所述事件将要发生(620);以及在与所述事件发生相关联的时间执行所述动作(630),其中执行所述动作包括对值执行逻辑运算。
2. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括将逻辑语义与所述控件相关联,其中所述逻辑语义是与所述控件相关联的 应用程序(230)专用的。
3. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括确定所述事件发生的次数(360)。
4. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括开始执行与一应用程序相关联的逻辑(285)。
5. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括恢复与一应用程序相关联的逻辑的执行(370)。
6. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括对所述控件施加效果(550)。
7. 如权利要求1所述的计算机实现方法,其特征在于,检测到所述事件 将要发生还包括在所述控件处接收一值(480)。
8. 如权利要求7所述的计算机实现方法,其特征在于,执行所述动作还 包括确认所述值(350)。
9. 如权利要求7所述的计算机实现方法,其特征在于,执行所述动作还 包括解决与所述值相关联的不正确数据分配(420)。
10. 如权利要求1所述的计算机实现方法,其特征在于,执行所述动作还 包括发现与所述控件相关联的属性(480)。
11. 如权利要求l所述的计算机实现方法,其特征在于,与所述事件发生 相关联的时间是所述事件发生前的时间(700)。
12. 如权利要求l所述的计算机实现方法,其特征在于,与所述事件发生相关联的时间是所述事件发生后的时间(700)。
13. —种用于声明性定义控件动作的系统,包括 第一动作(350);与所述第一动作(350)相关联的第二动作(360);与所述第一动作(350)和所述第二动作(360)相关联的控件(310), 其中所述第一动作(350)、所述第二动作(360)和所述控件是可独立定制的 组件;以及与所述控件相关联的事件,其中所述第一动作(350)和第二动作(360) 在所述事件发生时被执行。
14. 如权利要求13所述的系统,其特征在于,所述第二动作(360)嵌套 在所述第一动作(350)内。
15. 如权利要求13所述的系统,其特征在于,所述第二动作(360)与枚 举类型属性相关联,使得对所述枚举类型属性之一的选择引起有效属性选择与 所述第二动作(360)相关联。
16. 如权利要求13所述的系统,其特征在于,所述第二动作(360)在所 述第二动作(360)执行时取消第三动作(370)的执行。
17. —种具有用于声明性定义控件动作的计算机可执行指令的计算机可读 介质,所述指令包括将第一动作与一控件相关联(600),其中所述第一动作和所述控件是可独 立定制的组件;将一事件与所述控件相关联(610); 在所述控件处接收一值(480);在所述事件发生时执行所述第一动作(630),其中执行所述第一动作包 括对所述值执行逻辑运算;将第二动作与以下至少其中之一相关联所述第一动作和所述控件(610), 其中所述第一动作、所述第二动作和所述控件是可独立定制的组件;以及在所述事件发生时执行所述第二动作(630)。
18. 如权利要求17所述的计算机可读介质,其特征在于,将所述第二动 作与所述第一动作相关联还包括将所述第二动作嵌套在所述第一动作内。
19. 如权利要求17所述的计算机可读介质,其特征在于,还包括将所述第二动作与枚举类型属性相关联,使得对所述枚举类型属性之一的选择引起有 效属性选择与所述第二动作相关联(480)。
20.如权利要求17所述的计算机可读介质,其特征在于,执行所述第一 动作还包括将逻辑语义与所述控件相关联,其中所述逻辑语义是与所述控件相 关联的应用程序(230)专用的。
全文摘要
利用可扩展控件设计框架来声明性定义控件(视觉和非视觉的)和其他组件。控件的功能可通过经由被称为动作的对象声明性地添加行为和语义来扩展。控件不会因行为和语义的添加而变得过度复杂。动作对象封装良好定义的功能,并与现有的控件相关联。动作对象也与事件或某种其他触发器相关联从而当事件发生时使功能自动执行。功能可在独立应用程序组件中打包,使得不熟悉编程代码的用户可容易地在设计环境中为应用程序定义逻辑和功能。
文档编号G06F17/00GK101263484SQ200680033354
公开日2008年9月10日 申请日期2006年8月29日 优先权日2005年9月12日
发明者A·M·萨纳巴里, N·科塔里 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1