CN1834906A - 丰富数据绑定应用程序 - Google Patents

丰富数据绑定应用程序 Download PDF

Info

Publication number
CN1834906A
CN1834906A CNA2006100549156A CN200610054915A CN1834906A CN 1834906 A CN1834906 A CN 1834906A CN A2006100549156 A CNA2006100549156 A CN A2006100549156A CN 200610054915 A CN200610054915 A CN 200610054915A CN 1834906 A CN1834906 A CN 1834906A
Authority
CN
China
Prior art keywords
model
view
model attributes
data
binding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006100549156A
Other languages
English (en)
Inventor
A·盖斯佩瑞尼
C·R·斯通纳
D·默特
J·F·布隆司基尔
J·高斯曼
K·B·库珀
L·罗德
P·马伦
T·A·彼得斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1834906A publication Critical patent/CN1834906A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01CCONSTRUCTION OF, OR SURFACES FOR, ROADS, SPORTS GROUNDS, OR THE LIKE; MACHINES OR AUXILIARY TOOLS FOR CONSTRUCTION OR REPAIR
    • E01C19/00Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving
    • E01C19/12Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving for distributing granular or liquid materials
    • E01C19/16Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving for distributing granular or liquid materials for applying or spreading liquid materials, e.g. bitumen slurries
    • E01C19/17Application by spraying or throwing
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04GSCAFFOLDING; FORMS; SHUTTERING; BUILDING IMPLEMENTS OR AIDS, OR THEIR USE; HANDLING BUILDING MATERIALS ON THE SITE; REPAIRING, BREAKING-UP OR OTHER WORK ON EXISTING BUILDINGS
    • E04G23/00Working measures on existing buildings
    • E04G23/02Repairing, e.g. filling cracks; Restoring; Altering; Enlarging
    • E04G23/0296Repairing or restoring facades
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60PVEHICLES ADAPTED FOR LOAD TRANSPORTATION OR TO TRANSPORT, TO CARRY, OR TO COMPRISE SPECIAL LOADS OR OBJECTS
    • B60P3/00Vehicles adapted to transport, to carry or to comprise special loads or objects
    • B60P3/30Spraying vehicles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Chemical & Material Sciences (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Electrochemistry (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

为允许在不需要软件开发者进行大量图形设计或需要图形设计者具有大量软件知识的情况下进行应用程序开发,将应用程序分离成视图和模型。视图中的属性和模型中的属性通过数据绑定,例如通过数据绑定引擎来关联。该关联允许声明性地定义视图。可能需要变换来允许数据绑定。数据绑定允许模型中的数据和功能通过视图中定义的UI来使用。也允许自动生成的UI及命令绑定。

Description

丰富数据绑定应用程序
相关申请的参照
本申请涉及与其同时提交的名为“PRIORITY BINDING(优先级绑定)”的专利申请第10/823,461号(MSFT-3489/307340.1),以及名为“DATA-BINDINGMECHANISM TO PERFORM COMMAND BINDING(用于执行命令绑定的数据绑定机制)”的专利申请第10/822,910号(MSFT-3490/307339.1),这两个申请都于2004年4月13日提交,且共同转让。
技术领域
本发明涉及计算机处理,尤其涉及具有用户界面的应用程序的开发和操作。
背景技术
为产生具有图形用户界面(GUI)的丰富客户应用程序,同时需要高质量的图形设计工作和传统软件工程技能。必须完成图形设计工作以提供应用程序的GUI方面的外观。需要传统软件工程技能以提供应用程序的功能。
图形设计和软件开发是两种非常不同的学科。图形设计者和软件开发者通常很难有生产力地共同工作,从而使得很难产生同时具有高质量GUI和高质量功能的客户应用程序。
通常,设计者使用诸如Photoshop(来自Adobe Systems公司)、Illustrator(也来自Adobe Systems公司)、Flash(来自Macromedia公司)以及Director(也来自Macromedia)等图形工具来创建关于UI应当看上去像什么的视图。这一“实体模型”然后由开发者使用诸如Visual Studio(来自微软公司)等编程工具来重新实现。在最终的实现中,通常对原始的图形设计元素有极少的重用。来自第一应用程序的某些位图和图标偶然会在新的应用程序中重用,但是建立原型的控件和交互性不被重用。
这一过程的另一问题是,由图形设计者创建的部分设计会在该过程中丢失,因为易于绘制的某些效果对于软件开发者而言是难以或不可能重新创建的。实现设计者的想象的一个限制是软件开发者对于能够使用代码和当前的应用程序接口(API)做出的产物具有限制。另一实质的限制是开发者可能不能完全理解该设计,且可能在实现中做出与设计者的意向不同的选择。
另外,所得的应用程序是不可重用的。如果随时间的推移而修改设计,则设计者必须使用设计工具来重绘UI,而程序员必须重写代码的这些部分来匹配该设计。这可以在多个级别的任一级上发生:从表单或应用程序的总体布局到单个控件的外观。一般而言,以上述方式创建的代码难以调试、维护和扩展。
在可以外部地指定UI之前,有必要将应用程序业务逻辑与呈现分离。分离两者的一种方法是模型-视图-控制器(MVC)设计模式。MVC试图通过将应用程序划分成以下三个区域来解决这一问题:抽象模型、该模型的视图以及每一视图的控制器。控制器处理输入事件,并将它们转换成对视图或模型的改变;相反,视图和控制器将观察器附加到模型,使得它们可在模型改变时更新它们自身。例如,对于用户可用于搜索目录并查看目录信息的web客户应用程序,模型是储存目录信息之处。视图是对用户的呈现。控制器处理输入事件(诸如来自用户的点击和文本),并告知视图和模型如何作为结果来改变;视图和控制器也可作为模型中的改变,即视图和控制器通过观察器来获悉的改变的结果来改变。
MVC模式在概念上是清楚的。然而,在实践中,通常难以分离视图和控制器。由于这一困难,两者通常被组合成单个ViewController(视图控制器)类,它仍是设计和逻辑的混合,由此设计者和开发者同样难以在其上进行协作或对其中的任一个进行单独的创建。此外,将ViewController和模型捆绑在一起所需的处理事件和实现观察器和更新机制是易于出错且对设计者完全不适当的冗长乏味的、代码密集型任务。此外,观察器和更新代码通常在各个实例之间是类似的。
由此,如上所述,当前的开发者/设计者工作流和应用程序体系结构具有许多内在的问题。鉴于上述缺陷,需要一种改进的方式用于创建和设计具有用户界面(UI)组件的应用程序或其一部分。本发明满足了这一需求。
发明内容
为允许将视图和模型分离,同时最小化观察器和更新处理代码,使用了数据绑定。视图包括绑定到模型中的至少一个模型属性的至少一个视图属性。该绑定简化了使视图与设计紧密配合的任务,且自动执行了事件处理、观察器和更新机制先前所处理的功能。
在某些实施例中,可使用变换器来变换来自模型的数据以在视图中使用。在某些实施例中,可自动生成从视图中得到的UI的各部分。在某些实施例中,可使用命令绑定来允许在UI中触发的命令在模型中得到处理。
本发明的其它特征和优点将从以下本发明的详细描述和附图中变得明显。
附图说明
当结合附图阅读时,可以更好地理解以上概述以及以下当前较佳实施例的详细描述。为说明本发明起见,附图中示出了本发明的示例性构造;然而,本发明不限于所揭示的特定方法和装置。附图中:
图1是其中可实现本发明的各方面的示例性计算环境的框图;
图2是依照本发明的一个实施例包括UI组件的应用程序的框图;
图3是依照本发明的一个实施例可与模型一起使用的视图的描述;
图4是依照本发明的一个实施例的应用程序的各部分的框图;
图5是示出依照本发明的一个实施例,在视图、数据绑定组件和模型之间的数据流的框图;
图6是描绘依照本发明的一个实施例的命令绑定的使用的框图;以及
图7是依照本发明的一个实施例,经由用户界面向用户提供功能的方法的流程图。
具体实施方式
示例性计算环境
图1示出了适合在其中实现本发明的计算***环境100的一个示例。计算***环境100仅为合适的计算环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。
本领域的普通技术人员可以理解,计算机或其它客户机或服务器设备可被部署为计算机网络的一部分,或在分布式计算环境中部署。在这一点上,本发明涉及具有任意数量的存储器或存储单元、以及在任意数量的存储单元或卷上发生的任意数量的应用程序和进程的任何计算机***,这些计算机***可结合本发明来使用。本发明可应用于具有部署在网络环境或分布式计算环境中、具有远程或本地存储的服务器计算机和客户机计算机的环境。本发明也可应用于具有编程语言功能、用于结合远程或本地服务生成、接收和发送信息的解释和执行能力的独立计算设备。
本发明可以使用众多其它通用或专用计算***环境或配置来操作。适用于本发明的众所周知的计算***、环境和/或配置包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器***、基于微处理器的***、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、包括任一上述***或设备的分布式计算环境等等。
本发明可以在诸如程序模块等由计算机执行的计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络或其他数据传输机制连接的远程处理设备来执行。在分布式计算环境中,程序模块和其他数据可以位于包括存储器存储设备的本地和远程计算机存储介质中。分布式计算便于通过计算设备和***之间的直接交换来共享计算机资源和服务。这些资源和服务包括信息的交换、高速缓存存储以及文件的磁盘存储。分布式计算利用了网络连通性,从而允许客户机充分利用其集体能力来使整个企业获益。在这一点上,各种设备可具有可利用本发明的技术的应用程序、对象或资源。
参考图1,用于实现本发明的示例***包括计算机110形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、***存储器130以及将包括***存储器的各类***组件耦合至处理单元120的***总线121。***总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、***总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及***部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
***存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出***133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问或者当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作***134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CD ROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到***总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到***总线121。
上文讨论并在图1示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作***144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作***134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作***144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至***总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至***总线121。除监视器之外,计算机也可包括其它***输出设备,如扬声器197和打印机196,它们通过输出***接口195连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有相对于计算机110所描述的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,它通过用户输入接口160或其他适当机制连接至***总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,而非局限,图1示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
尽管此处的某些示例性实施例是结合驻留在计算设备上的软件来描述的,然而本发明的一个或多个部分也可通过操作***、应用程序编程接口(API)或“中间人”对象、控制对象、硬件、固件等来实现,使得方法可被包括在所有.NET语言和服务以及其它分布式计算框架中,或者在其中得到支持和访问。
在数据绑定应用程序中使用数据绑定组件
为提供应用程序元素的更高生产力、更好的重用性,以及开发者和设计者之间更容易的协作,本发明提供了一种用户界面(UI)的外观(或“视图”)与底层行为(“模型”)之间的清晰的分离。图2是依照本发明的一个实施例,包括UI组件的应用程序的框图。如图2中所见,应用程序200包括视图210和模型240。这些对应于设计应用程序的MVC模式中的视图和模型。模型240表示用于应用程序的逻辑的无UI代码。例如,用于目录的数据库和业务逻辑可以在模型240内实现。作为另一示例,在应用程序200允许用户对文件***进行资源管理的情况下,本示例性情况中的应用程序的模型240是文件***:所选择的目录内的一组文件夹和文件。模型240包括数据(诸如目录数据)和关于数据的逻辑,例如一致性规则。一致性规则可例如要求目录中的产品的价格是非负的。
通过使用模型240,保留了使得以传统编程语言来定义模型且由此对软件开发者可理解的好处。在文件***的示例中,模型由移动、复制和重命名文件、创建文件夹以及执行应用程序文件的方法构成。这些操作必定需要对任务专用但独立于用于向最终用户公开这些操作的UI的业务逻辑。视图210是声明性地指定的。例如,视图210可通过使用诸如微软的Visual Studio产品或Macromedia公司的Flex产品等工具来定义。
为提供视图210和模型240之间的链接,应用程序200使用通用数据绑定组件220。通用数据绑定组件在应用程序200内示出,然而,在某些实施例中,它是由应用程序200使用的可用资源。在某些实施例中,数据绑定组件220是数据绑定引擎220。这一数据绑定引擎允许对象对的属性之间的绑定,诸如模型属性和视图属性之间的关联。数据绑定引擎220监听这些对象上的属性改变通知,因此源属性的改变会自动在目标属性上得到反映,反之亦然。数据绑定引擎可支持对属性路径的评估,以允许将目标的特定部分绑定到源的特定部分。在本发明的某些实施例中,将目标对象属性绑定到源对象属性可以用诸如HTML(超文本标记语言)、XML(可扩展标记语言)、XAML(可扩展应用程序标记语言)或其它合适的标记语言等标记语言来声明性地完成。
因此,数据绑定引擎220担当视图210和模型240之间的中介。由此,通过使用数据绑定引擎,可用与模型分离地构造的用户界面来设计应用程序,而无需应用程序代码明确地处理来自视图210的事件并在模型240上实现观察器和更新机制。数据绑定引擎220将其源与目标自动同步。由此,当用户输入到视图210或模型240中发生改变时,发生适当的更新。
作为一个示例,应用程序200可以是显示温度的简单应用程序。视图210可以由图形设计者用图形工具来创作。例如,图3中描绘了一个简单的视图。如图3所示,图形300包括文本框310和温度计图形320。在该示例中,应用程序200旨在允许用户将邮政编码输入到文本框310中,并在温度计图形320中显示该邮政编码中的对应温度。温度计上的读数由图形设计者设置,以对应于与图形300相关联的变量“Length(长度)”。来自文本输入框的数据与变量“zipcode(邮政编码)”相关联。在本示例的一种变体中,为检索对应于邮政编码的正确温度,咨询数据库。数据库对每一邮政编码储存要为温度计图形320显示的长度。数据绑定引擎220将图形300的邮政编码和长度与数据库中的邮政编码和长度绑定,且对于图3的温度计应用程序,数据库是模型240。
使用数据绑定组件和适配器层
图4是依照本发明的一个实施例的应用程序的各部分的框图。图4示出了具有视图410、数据绑定组件420和模型440的应用程序400。视图410、数据绑定组件420和模型440是如上文参考图2的对应元素所描述的。然而,图4还包括适配器层430,它执行视图410中的概念与模型440中的概念之间的任何必要的转换。
例如,在温度计应用程序示例的另一种变体中,用于图3所示的温度计应用程序的模型440是由可通过万维网获得的服务来实现的。web服务可以由模型440在应用程序中公开为以下示例,其中TemperatureModel是所描述的模型:
public class TemperatureModel

    {

      private string zipcode;

      public event PropertyChangedEventHandler PropertyChanged;

      public double Temperature

      {

        get{return webservice.get_temp(zipcode);}

      }

      public string ZipCode

      {

        get{return zipcode ;}

        set

        {

            zipcode=value ;

            if(PropertyChanged!=null)

            {

                PropertyChanged(this,"ZipCode");

                PropertyChanged(this,"Temperature");

            }

        }

    }
        <!-- SIPO <DP n="8"> -->
        <dp n="d8"/>
    }
如所提供的,webservice(web服务)返回对应于以度数表示的温度的浮点数,而非可直接在视图中使用的Length值。在这一情况下,适配器层430将这一浮点数转换成可在视图410中使用的长度。尽管数据绑定组件420可例如通过允许通过因特网来访问该服务的包装直接对web服务起作用,然而由该服务提供的结果是视图410不能理解的,视图410需要的是长度而非以度数表示的温度。由此,适配器层430提供了一种转换。用于基于web的温度计应用程序的适配器层430的一个示例如下:
public class TemperatureConverter
{
  public object Convert(object temperature)
  {
    return new Length(((double)temperature)*2.5);
  }
}
该适配器层430允许从返回自web服务的温度中确定长度。温度是从webservice中获得的,webservice是用于从模型440上的Temperature(温度)属性调用通过万维网公开的远程方法(“webservice.9et_temp(zipcode)”)的客户机端脚本。Length基于所获得的温度。数据绑定组件420然后通过适配器层430将视图410的邮政编码绑定到模型440中的邮政编码,并将视图410中的Length绑定到模型440中的Length。用于视图410中的Length的绑定声明引用模型440中的Temperature和适配器层430中的转换器两者。当在视图410中输入新的邮政编码时,数据绑定组件将更新模型440中的ZipCode(邮政编码)属性。因此,模型将向***通知,模型中的ZipCode和Temperature属性都已改变。数据绑定组件然后使用模型440(web服务)获得更新的温度值,然后应用适配器层430中的转换,来计算新的Length。所得的Length值将被提供给视图410。
图5是依照本发明的一个实施例,示出视图、数据绑定组件和模型之间的数据流的框图。数据绑定组件520监听来自视图510的属性改变通知,如由箭头512所示的。另外,数据绑定组件520监听来自模型540的属性改变通知,如由箭头542所示的。如果接收到改变通知,则数据绑定组件520将视图510中的视图属性550与模型540中的模型属性560同步,如由箭头525和526所示的。当存在适配器层530时,如上所述,适配器层530在属性不直接对应之处允许这一同步。
变换器、自动生成的UI以及命令绑定
再次参考图2,如上所述,适配器层允许变换器,使得视图210中的属性可与模型240中的属性相对应。变换器是将一特定的数据类从一组值变换成另一组值的对象。变换器可以在一个方向或两个方向上运作。由此,在温度计的示例中,提供了变换器以将从web服务检索到的结果变换成长度。该变换是单向的,因为它不需要转换回温度值,且仅需要单向的变换器。然而,可以有需要双向变换器的情况。例如,想象如果在图3的图形300上也出现了美国地图,且用户可选择地图上的一点而不是在文本框310中输入邮政编码。在这一情况下,视图210中保持点击位置的属性将被变换成模型240中标识邮政编码的属性。该邮政编码然后用于通过附加的变换改变在文本框310中显示的值,以及在温度计图形320上显示的值。
变换器允许UI以不同的格式公开数据,同时允许模型240以单个一致的格式来公开数据。它们也允许模型240上的同一数据以若干不同的方式同时显示,而不会迫使模型240公开冗余信息。除将属性绑定到UI组件之外,数据绑定也提供了基于模型240为用户界面自动生成内容的强大能力。例如,模型240可公开作为数据集合的属性。视图可声明性地指定对模型集合中的每一项在视图中创建一个新的用户界面组件。视图端上的集合然后与作为模型上数据集合的属性绑定。这一绑定由此产生在UI中自动生成用户界面组件。由此,例如,模型中的名称列表将产生具有在UI中列出的每一名称的菜单。视图210无需知道在名称列表中有多少元素,具有正确数量的列表是基于绑定自动生成的。不同的UI元素可以用这一方式来生成,包括通过填充菜单项、填充列表视图以及填充组合框。
命令绑定用于将模型中的操作绑定到UI元素。图6是描绘依照本发明的一个实施例的命令绑定的使用的框图。在视图210中,UI元素640(例如,菜单项)将公开属性645。属性645担当数据绑定期间的接收器(目标)。例如,UI元素640可以是文件***示例中的删除按钮,而属性645是连接到删除所选中文件的对应模型命令的命令属性。将命令的功能连接到属性645可以通过将模型240作为数据源来分配,并将UI元素640上的属性645数据绑定到模型上的命令650的命令属性655来完成。由此,视图210中的命令的功能可以声明性地实现,而无需涉及任何必须的程序代码。本示例中的按钮UI元素仅负责在按下按钮时调用相关联的命令,而无论命令是什么。
在某些实施例中,声明性绑定可以使用属性路径,通过首先定址模型240中的活动文档,然后用在用户界面640上的按钮的命令属性645中指定的属性路径选择该活动文档上的编辑命令来实现。
依照本发明用于向用户提供功能的方法
图7是依照本发明的一个实施例,用于通过用户界面向用户提供功能的方法的流程图。这一功能可提供丰富的数据绑定应用程序。在步骤700,提供描述用户界面的视图数据。该视图数据包括至少一个视图属性。另外,在步骤710,提供实现该功能的模型数据。该模型数据可通过为其提供数据(例如,来自数据库或其它数据存储)或通过提供程序性功能来实现该功能。在步骤720,将至少一个视图属性绑定到至少一个模型属性。在本发明的某些实施例中,这是通过数据绑定引擎来完成的。步骤720可以通过将模型属性变换成符合视图的属性来完成,该符合视图的属性然后被绑定到模型属性。另外,步骤720可通过将视图属性变换成符合模型的属性来完成,该符合模型的属性被绑定到视图属性。视图的UI元素的自动生成以及命令绑定可以通过绑定步骤720来实现。
通过提供模型数据并将某些模型数据属性绑定到视图数据属性来从视图数据中创建应用程序是可能的,同样,通过提供视图数据和绑定来从模型数据中创建应用程序也是可能的。
结论
此处所描述的各种技术可结合硬件或软件来实现,或在适当时以两者的组合来实现。由此,本发明的方法和装置或其某些方面或部分,可采用包含在诸如软盘、CD-ROM、硬盘或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器中并由其执行时,该机器成为用于实施本发明的装置。在可编程计算机上的程序代码执行的情况下,计算装置一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。可利用本发明的各方面的例如通过使用数据处理API等来创建和/或实现域专用编程模型的一个或多个程序较佳地用高级过程语言或面向对象的编程语言来实现,以与计算机***通信。然而,如有需要,程序可以用汇编语言或机器语言来实现。在任何情况下,语言可以是编译或解释语言,并与硬件实现相组合。

Claims (20)

1.一种用于通过用户界面提供功能的方法,所述方法包括:
提供描述用户界面的视图数据,所述视图数据包括至少一个视图属性;
提供实现所述功能的模型数据,所述模型数据包括至少一个模型属性;以及
将至少一个所述视图属性绑定到至少一个所述模型属性。
2.如权利要求1所述的方法,其特征在于,所述绑定包括使用数据绑定引擎来绑定。
3.如权利要求1所述的方法,其特征在于,将至少一个所述视图属性绑定到至少一个所述模型属性的所述步骤包括:
提供所述模型属性的变换,所述变换产生符合视图的模型属性;以及
将所述符合视图的模型属性绑定到所述模型属性。
4.如权利要求1所述的方法,其特征在于,所述视图数据基于至少一个特定的视图属性描述了用户界面元素的呈现,其中,所述特定视图属性被绑定到至少一个特定的模型属性,且其中,所述绑定允许所述呈现基于所述至少一个模型属性自动生成所述用户界面元素。
5.如权利要求4所述的方法,其特征在于,所述自动生成包括从以下各项中选出的一个或多个:填充菜单项、填充列表视图、填充组合框。
6.如权利要求1所述的方法,其特征在于,所述模型属性是命令。
7.一种包括用于执行如权利要求1所述的方法的计算机可执行指令的计算机可读介质。
8.一种用于提供具有用户界面的应用程序的***,所述***包括:
包括描述用户界面的视图数据的视图,所述视图数据包括至少一个视图属性;
包括实现所述功能的模型数据的模型,所述模型数据包括至少一个模型属性;以及
将至少一个所述视图属性绑定到至少一个所述模型属性的数据绑定组件。
9.如权利要求8所述的***,其特征在于,所述绑定包括使用数据绑定引擎来绑定。
10.如权利要求8所述的***,其特征在于,所述视图属性到所述模型属性的所述绑定包括:
提供所述模型属性的变换,所述变换产生符合视图的模型属性;以及
将所述符合视图的模型属性绑定到所述模型属性。
11.如权利要求8所述的***,其特征在于,所述视图数据基于至少一个特定的视图属性描述用户界面元素的呈现,其中所述特定视图属性被绑定到至少一个特定的模型属性,且其中,所述绑定允许所述呈现基于所述至少一个模型属性自动生成所述用户界面元素。
12.如权利要求11所述的***,其特征在于,所述自动生成包括从以下各项中选出的一个或多个:填充菜单项、填充列表视图、填充组合框。
13.如权利要求8所述的***,其特征在于,所述模型属性是命令。
14.一种用于从视图数据创建应用程序的方法,所述视图数据描述用户界面,所述视图数据包括至少一个视图属性,所述方法包括:
提供实现功能的模型数据,所述模型数据包括至少一个模型属性;
将至少一个所述视图属性绑定到至少一个所述模型属性。
15.如权利要求14所述的方法,其特征在于,所述绑定包括使用数据绑定引擎来绑定。
16.如权利要求14所述的方法,其特征在于,将至少一个所述视图属性绑定到至少一个所述模型属性的所述步骤包括:
提供所述模型属性的变换,所述变换产生符合视图的模型属性;以及
将所述符合视图的模型属性绑定到所述模型属性。
17.如权利要求14所述的方法,其特征在于,所述视图数据基于至少一个特定的视图属性描述用户界面元素的呈现,其中所述特定视图属性被绑定到至少一个特定的模型属性,且其中,所述绑定允许所述呈现基于所述至少一个模型属性自动生成所述用户界面元素。
18.如权利要求17所述的方法,其特征在于,所述自动生成包括从以下各项中选出的一个或多个:填充菜单项、填充列表视图、填充组合框。
19.如权利要求14所述的方法,其特征在于,所述模型属性是命令。
20.一种包括用于执行如权利要求14所述的方法的计算机可执行指令的计算机可读介质。
CNA2006100549156A 2005-03-15 2006-02-16 丰富数据绑定应用程序 Pending CN1834906A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/080,531 2005-03-15
US11/080,531 US20060212842A1 (en) 2005-03-15 2005-03-15 Rich data-bound application

Publications (1)

Publication Number Publication Date
CN1834906A true CN1834906A (zh) 2006-09-20

Family

ID=36579740

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006100549156A Pending CN1834906A (zh) 2005-03-15 2006-02-16 丰富数据绑定应用程序

Country Status (5)

Country Link
US (1) US20060212842A1 (zh)
EP (1) EP1703381B1 (zh)
JP (1) JP5031242B2 (zh)
KR (1) KR101292401B1 (zh)
CN (1) CN1834906A (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101861576A (zh) * 2007-09-28 2010-10-13 埃克斯里昂股份公司 网络操作***
CN102099798A (zh) * 2008-07-16 2011-06-15 谷歌公司 用于使用本机代码模块执行应用的方法和***
CN102591629A (zh) * 2011-01-18 2012-07-18 腾讯科技(深圳)有限公司 一种添加图像元件的方法和装置
CN102591644A (zh) * 2010-12-13 2012-07-18 微软公司 未知可视布局位置的静态定义
CN102722372A (zh) * 2012-05-25 2012-10-10 上海学智科技有限公司 一种通过分类配置自动生成代码的方法及***
CN102937897A (zh) * 2011-11-21 2013-02-20 微软公司 异步数据绑定
CN103314373A (zh) * 2010-12-20 2013-09-18 赛贝斯股份有限公司 移动设备上大数据集的有效处理
CN105335160A (zh) * 2015-11-10 2016-02-17 河海大学 一种基于jsf的web端组件敏捷开发方法
CN105988778A (zh) * 2015-01-28 2016-10-05 阿里巴巴集团控股有限公司 一种页面设置方法及装置
CN106068638A (zh) * 2014-03-11 2016-11-02 微软技术许可有限责任公司 用于模块化组装***的数据存储库
CN106164858A (zh) * 2014-04-02 2016-11-23 微软技术许可有限责任公司 数据视图展示机制
CN107454954A (zh) * 2015-05-27 2017-12-08 谷歌公司 数据绑定相关性分析
CN108052365A (zh) * 2017-12-19 2018-05-18 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN108549570A (zh) * 2018-04-28 2018-09-18 北京小米移动软件有限公司 用户界面的更新方法及装置
US10150043B2 (en) 2014-03-11 2018-12-11 Microsoft Technology Licensing, Llc Interactive smart beads
US10159894B2 (en) 2014-03-11 2018-12-25 Microsoft Technology Licensing, Llc Gaming system for modular toys
US10188939B2 (en) 2014-03-11 2019-01-29 Microsoft Technology Licensing, Llc Modular construction for interacting with software
US10445437B2 (en) 2014-03-11 2019-10-15 Microsoft Technology Licensing, Llc Generation of custom modular objects
US10685123B2 (en) 2008-05-08 2020-06-16 Google Llc Method for validating an untrusted native code module
WO2022205173A1 (zh) * 2021-03-31 2022-10-06 西门子(中国)有限公司 用于跨控制对象执行工作流任务的方法和装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099710B2 (en) 2006-12-14 2012-01-17 Microsoft Corporation UI behaviors
JP2008171281A (ja) * 2007-01-12 2008-07-24 Fujitsu Ltd 表示画面構成装置
US8112460B2 (en) 2007-09-28 2012-02-07 Xcerion Aktiebolag Framework for applying rules
US20090112915A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Class configuration for locally cached remote data binding
US8327332B2 (en) 2008-09-02 2012-12-04 Microsoft Corporation Seamless debugging among different application views
US9253536B2 (en) * 2009-03-18 2016-02-02 Microsoft Technology Licensing, Llc Updating data-consuming entities
US8997053B2 (en) * 2010-01-14 2015-03-31 Worksoft, Inc. System and method for automated testing of software applications with dynamic user interfaces spanning multiple technologies
JP5537330B2 (ja) * 2010-08-11 2014-07-02 富士通株式会社 表示画面構成装置
US9516088B2 (en) * 2012-08-29 2016-12-06 Ebay Inc. Systems and methods to consistently generate web content
CN104834533B (zh) * 2015-06-05 2018-12-14 东信和平科技股份有限公司 一种pc机安装程序的建立方法及装置
US10394627B2 (en) * 2017-12-28 2019-08-27 Schneider Electric Software, Llc Asynchronous C#-JS data binding bridge
GB201914521D0 (en) * 2019-10-08 2019-11-20 Wanilla Holdings Ltd A method of and a system for user interface generation
CN114691128A (zh) * 2020-12-29 2022-07-01 苏州国双软件有限公司 一种前端页面生成方法、装置、电子设备及存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255356A (en) * 1989-05-31 1993-10-19 Microsoft Corporation Method for hiding and showing spreadsheet cells
US5396587A (en) * 1990-04-11 1995-03-07 501 Lotus Development Corp. Asynchronous, minimal update display system
US5388196A (en) * 1990-09-07 1995-02-07 Xerox Corporation Hierarchical shared books with database
EP0578207B1 (en) * 1992-07-06 1999-12-01 Microsoft Corporation Method for naming and binding objects
US5452459A (en) * 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
US5485617A (en) * 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5706505A (en) * 1994-08-19 1998-01-06 Microsoft Corporation Method and system for binding data in a computer system
US5835904A (en) * 1995-10-31 1998-11-10 Microsoft Corporation System and method for implementing database cursors in a client/server environment
US6401099B1 (en) * 1996-12-06 2002-06-04 Microsoft Corporation Asynchronous binding of named objects
US6262729B1 (en) * 1997-04-14 2001-07-17 Apple Computer, Inc. Method and apparatus for binding user interface objects to application objects
US6378004B1 (en) * 1998-05-07 2002-04-23 Compaq Computer Corporation Method of communicating asynchronous elements from a mini-port driver
US6330006B1 (en) * 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US6463442B1 (en) * 1998-06-30 2002-10-08 Microsoft Corporation Container independent data binding system
US6438618B1 (en) * 1998-12-16 2002-08-20 Intel Corporation Method and device for filtering events in an event notification service
JP4000718B2 (ja) * 1999-06-24 2007-10-31 株式会社日立製作所 プログラム間バインド方法及び分散処理システム
AUPQ808700A0 (en) * 2000-06-09 2000-07-06 Honeywell Limited Human-machine interface
US7099958B2 (en) * 2000-08-15 2006-08-29 Fujitsu Limited System for designing and performing web application
GB2377518B (en) * 2001-02-12 2003-10-22 Altio Ltd Client software enabling a client to run a network based application
US20020198747A1 (en) * 2001-06-26 2002-12-26 Boyer Stanley Gene Event driven airport
US6968329B1 (en) * 2001-09-26 2005-11-22 Syniverse Brience, Llc Event-driven and logic-based data transformation
TWI237354B (en) * 2002-01-31 2005-08-01 Advanced Semiconductor Eng Stacked package structure
US7028288B2 (en) * 2002-06-03 2006-04-11 Sun Microsystems, Inc. Input field constraint mechanism
EP1639489A4 (en) 2003-05-17 2007-11-14 Microsoft Corp SYSTEM AND METHOD FOR CONTROLLING USER INTERFACE PROPERTIES WITH DATA
US20060069717A1 (en) * 2003-08-27 2006-03-30 Ascential Software Corporation Security service for a services oriented architecture in a data integration platform
US7409692B2 (en) * 2003-09-30 2008-08-05 Sap Ag Software component architecture
US7469402B2 (en) * 2004-12-28 2008-12-23 Sap Aktiengesellschaft Pluggable model framework

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101861576A (zh) * 2007-09-28 2010-10-13 埃克斯里昂股份公司 网络操作***
US10685123B2 (en) 2008-05-08 2020-06-16 Google Llc Method for validating an untrusted native code module
CN102099798B (zh) * 2008-07-16 2015-11-25 谷歌公司 用于使用本机代码模块执行应用的方法和***
CN102099798A (zh) * 2008-07-16 2011-06-15 谷歌公司 用于使用本机代码模块执行应用的方法和***
US11514156B2 (en) 2008-07-16 2022-11-29 Google Llc Method and system for executing applications using native code modules
CN105320639B (zh) * 2008-07-16 2018-12-18 谷歌有限责任公司 用于使用本机代码模块执行应用的方法和***
CN105320639A (zh) * 2008-07-16 2016-02-10 谷歌公司 用于使用本机代码模块执行应用的方法和***
CN102591644A (zh) * 2010-12-13 2012-07-18 微软公司 未知可视布局位置的静态定义
CN102591644B (zh) * 2010-12-13 2015-04-29 微软公司 描述动态图形布局位置的方法以及界面可视化***
CN103314373B (zh) * 2010-12-20 2017-09-01 赛贝斯股份有限公司 移动设备上大数据集的有效处理
CN103314373A (zh) * 2010-12-20 2013-09-18 赛贝斯股份有限公司 移动设备上大数据集的有效处理
CN102591629A (zh) * 2011-01-18 2012-07-18 腾讯科技(深圳)有限公司 一种添加图像元件的方法和装置
CN102937897B (zh) * 2011-11-21 2016-07-06 微软技术许可有限责任公司 异步数据绑定
CN102937897A (zh) * 2011-11-21 2013-02-20 微软公司 异步数据绑定
CN102722372A (zh) * 2012-05-25 2012-10-10 上海学智科技有限公司 一种通过分类配置自动生成代码的方法及***
CN102722372B (zh) * 2012-05-25 2015-04-22 上海学智科技有限公司 一种通过分类配置自动生成代码的方法及***
US10649920B2 (en) 2014-03-11 2020-05-12 Microsoft Technology Licensing, Llc Data store for a modular assembly system
CN106068638A (zh) * 2014-03-11 2016-11-02 微软技术许可有限责任公司 用于模块化组装***的数据存储库
US10150043B2 (en) 2014-03-11 2018-12-11 Microsoft Technology Licensing, Llc Interactive smart beads
US10159894B2 (en) 2014-03-11 2018-12-25 Microsoft Technology Licensing, Llc Gaming system for modular toys
US10188939B2 (en) 2014-03-11 2019-01-29 Microsoft Technology Licensing, Llc Modular construction for interacting with software
US10445437B2 (en) 2014-03-11 2019-10-15 Microsoft Technology Licensing, Llc Generation of custom modular objects
CN106068638B (zh) * 2014-03-11 2020-02-14 微软技术许可有限责任公司 用于模块化组装***的数据存储库
CN106164858A (zh) * 2014-04-02 2016-11-23 微软技术许可有限责任公司 数据视图展示机制
CN105988778A (zh) * 2015-01-28 2016-10-05 阿里巴巴集团控股有限公司 一种页面设置方法及装置
CN107454954A (zh) * 2015-05-27 2017-12-08 谷歌公司 数据绑定相关性分析
CN107454954B (zh) * 2015-05-27 2021-03-02 谷歌有限责任公司 数据绑定相关性分析
CN105335160B (zh) * 2015-11-10 2018-12-28 河海大学 一种基于jsf的web端组件敏捷开发方法
CN105335160A (zh) * 2015-11-10 2016-02-17 河海大学 一种基于jsf的web端组件敏捷开发方法
CN108052365A (zh) * 2017-12-19 2018-05-18 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN108052365B (zh) * 2017-12-19 2021-04-27 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN108549570A (zh) * 2018-04-28 2018-09-18 北京小米移动软件有限公司 用户界面的更新方法及装置
CN108549570B (zh) * 2018-04-28 2021-10-26 北京小米移动软件有限公司 用户界面的更新方法及装置
WO2022205173A1 (zh) * 2021-03-31 2022-10-06 西门子(中国)有限公司 用于跨控制对象执行工作流任务的方法和装置

Also Published As

Publication number Publication date
JP2006260540A (ja) 2006-09-28
EP1703381B1 (en) 2013-05-29
US20060212842A1 (en) 2006-09-21
KR101292401B1 (ko) 2013-08-01
JP5031242B2 (ja) 2012-09-19
KR20060101221A (ko) 2006-09-22
EP1703381A2 (en) 2006-09-20
EP1703381A3 (en) 2008-06-25

Similar Documents

Publication Publication Date Title
CN1834906A (zh) 丰富数据绑定应用程序
US9946518B2 (en) System and method for extending a visualization platform
CN1257473C (zh) Html文档中增加可访问性的主动alt标记的方法和***
US9262158B2 (en) Reverse engineering user interface mockups from working software
CN1684034A (zh) 用以执行命令绑定的数据绑定机制的应用
US20160117291A1 (en) Conversion of a presentation to darwin information typing architecture (dita)
CN1804796A (zh) 基于树视图的编辑器中的内联属性编辑***和方法
CN1573749A (zh) 使用外部计划主题的Web网页绘制机制
US20100211420A1 (en) Converting command units into workflow activities
CN1755620A (zh) 工作流进度表创作工具
JP2005174283A (ja) コンピュータプラットフォームのプログラミングインターフェース
CN1573693A (zh) 用于创建、管理和使用代码段的***和方法
US20150089408A1 (en) Method and framework for content viewer integrations
US20160188136A1 (en) System and Method that Internally Converts PowerPoint Non-Editable and Motionless Presentation Mode Slides Into Editable and Mobile Presentation Mode Slides (iSlides)
JP2013518321A (ja) パターンベースのユーザインターフェース
KR20220132456A (ko) 단일 페이지 애플리케이션 방식의 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
Nagel et al. Professional C# 2012 and. Net 4.5
KR20090000199A (ko) 웹 서버 어플리케이션 프레임워크와 상기 프레임워크를이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는컴퓨터로 읽을 수 있는 기록 매체
US10706225B2 (en) Form management system and method
CN1620655A (zh) 用数据控制用户界面属性的***和方法
US20240160421A1 (en) Integrated development system and method, for user interface platform, having source compiler
Tanaka et al. Meme media for clipping and combining web resources
Honkala Web user interaction: a declarative approach based on XForms
Paakkanen Upcoming JavaScript web frameworks and their techniques
US20240176599A1 (en) User interface platform integrated-development system and method having microservice architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20060920