CN101322096B - 元数据驱动的用户界面 - Google Patents

元数据驱动的用户界面 Download PDF

Info

Publication number
CN101322096B
CN101322096B CN2006800455212A CN200680045521A CN101322096B CN 101322096 B CN101322096 B CN 101322096B CN 2006800455212 A CN2006800455212 A CN 2006800455212A CN 200680045521 A CN200680045521 A CN 200680045521A CN 101322096 B CN101322096 B CN 101322096B
Authority
CN
China
Prior art keywords
control
metadata
user interface
characteristic
name
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.)
Expired - Fee Related
Application number
CN2006800455212A
Other languages
English (en)
Other versions
CN101322096A (zh
Inventor
P·M·邓恩格勒
A·K·克里什纳
J·S·盖驰伯利
L·M·萨恩彻
N·M·盖驰伯利
N·K·盖驰伯利
R·R·达尔夫
S·S·盖驰伯利
S·K·C·盖驰伯利
Z·匹科克
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 CN101322096A publication Critical patent/CN101322096A/zh
Application granted granted Critical
Publication of CN101322096B publication Critical patent/CN101322096B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

使用元数据来创建针对一应用程序的定制用户界面(UI)部分。该元数据可以是基于XML的,并且能够对该元数据进行解释并在随后对其进行描绘以实现同样支持数据和UI控件之间的数据绑定的定制UI。一旦元数据被创建,则由描绘引擎处理这些元数据来显示UI控件。解释程序可用于在元数据文件被发送至描绘引擎之前对其进行解释。描绘引擎和解释程序都无需知晓宿主应用程序并且都对任意元数据驱动UI提供支持。元数据模式可以包括以下机制:创建该UI的自定义控件;通过提供对隐藏代码程序集的访问而在程序上修改UI控件,并支持针对各UI控件的事件处理。

Description

元数据驱动的用户界面
背景
某些应用程序开发人员希望定制他们的应用程序以便与某些广泛使用的现有应用程序互操作,这些应用程序诸如:文字处理应用程序;电子邮件应用程序等。在某些情况下,应用程序开发人员希望提供为一应用程序定制但仍能随着该应用程序的改变而被容易地修改或扩展的用户界面。现今,应用程序开发人员将该功能硬编码到应用程序中,使得应用程序的改变和更新令人厌烦。
概述
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定要求保护的主题的范围。
定义元数据以创建针对一应用程序的定制用户界面(UI)部分。该元数据是根据一元数据模式来创建的,该模式定义用于将应用程序数据与UI控件进行数据绑定的数据机制。该元数据可以是基于XML的,并且对该元数据进行解释并在随后对其进行描绘以实现同样支持数据和UI控件之间的数据绑定的定制UI。例如,应用程序开发人员可以编写定义了基本以及自定义UI控件、控件特性、控件布局等的元数据文件。一旦元数据被创建,则通过描绘引擎处理这些元数据来显示UI控件。可使用解释程序以便在元数据文件被发送至描绘引擎之前对其进行解释。描绘引擎和解释程序都无需知晓宿主应用程序并且都提供了对任意元数据驱动UI的支持。元数据模式可以包括以下机制:为UI创建自定义控件;通过提供对隐藏代码程序集(code-behind assembly)的访问而在程序上修改UI控件,并支持对UI控件的事件处理。
附图简述
图1示出了一示例性计算环境;
图2示出了一用户界面元数据系统;
图3A和3B示出了由元数据文件描述的示例性UI表单;
图4示出了一种使用元数据来描述UI表单的过程;以及
图5示出了一种用关联元数据描绘UI表单的过程。
详细描述
现在参考其中相同的标号代表相似的元素的附图,描述各实施例。具体地,图1和相应的讨论旨在提供对在其中可以实现各实施例的合适计算环境的简要、概括描述。
一般而言,程序模块包括例程、程序、组件、数据结构和其它类型的结构,它们执行特定的任务或者实现特定的抽象数据类型。也可使用其它计算机系统配置,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型机、大型机等等。也可使用分布式计算环境,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可被置于本地或远程的存储器设备中。
图1示出了一种可用于实现在此描述的各种技术的示例性计算机环境100。计算机环境100只是合适的计算环境的一个示例,而非意在暗示对计算机和网络体系结构使用范围或功能性有任何限制。计算机环境100也不应解释成对于在示例性计算机环境100中所示出的任一组件或其组合有任何依赖或要求。
计算机环境100包括具有计算机102形式的通用计算设备。计算机102的各组件可以包括但不限于一个或多个处理器或处理单元104、系统存储器106、以及将包括处理器104的各系统组件耦合至系统存储器106的系统总线108。
系统总线108代表示任何若干类型的总线结构之一个或多个,包括存储器总线或存储器控制器、外设总线、加速图形端口以及使用任何各种总线体系结构的处理器或局部总线。作为示例,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)、PCI快速(Express)总线、通用串行总线(USB)、安全数字(SD)总线、或在IEEE 1394(即,FireWire)总线。
计算机102可以包括各种计算机可读介质。这些介质可以是能由计算机302访问的任何可用介质,而且包含易失性和非易失性介质以及可移动和不可移动介质。
系统存储器106包括具有诸如随机存取存储器(RAM)110的易失性存储器形式;和/或诸如只读存储器(ROM)112或闪速RAM的非易失性存储器形式的计算机可读介质。基本输入/输出系统(BIOS)114包含有助于诸如启动时在计算机102中各元件之间传递信息的基本例程,它通常存储在ROM 112或闪速RAM中。RAM 110通常包含处理单元304可以立即访问和/或目前正在操作的数据和/或程序模块。
计算机102还可以包括其他可移动/不可移动,易失性/非易失性计算机存储介质。举例说明,图1列举了硬盘驱动器116,其用于对不可移除、非易失性磁性介质(未示出)进行读写操作;还列举了磁盘驱动器118,其用于对可移除、非易失性磁盘120(如“软盘”)进行读写操作;以及光盘驱动器122,其用于对可移除、非易失性光盘124(如CD-ROM、DVD-ROM或其它光介质)进行读写操作。硬盘驱动器116、磁盘驱动器118和光盘驱动器122每个都通过一个或多个数据介质接口125与系统总线108相连。另外,硬盘驱动器116、磁盘驱动器118和光盘驱动器122也可通过一个或多个接口(未示出)与系统总线108相连。
盘驱动器及其相关的计算机可读介质提供计算机可读指令、数据结构、程序模块以及其它计算机102数据的非易失性存储。尽管该示例示出了硬盘116、可移动磁盘120和可移动光盘124,但应当认识到其它类型可存储由计算机访问的数据的计算机可读介质也可用来实现该示例性计算系统和环境,这些介质如盒式磁带或其它磁性存储设备、闪速存储卡、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等等。
任何数量的程序模块可被存储在硬盘116、磁盘120、光盘124、ROM 112和/或RAM 110中,作为示例,这些程序模块包括操作系统126(在某些实施例中包括上述低优先级I/O文件系统和高优先级I/O文件系统以及索引系统)、一个或多个应用程序128、解释程序130以及描绘引擎132。这些操作系统126、一个或多个应用程序128、解释程序130以及描绘引擎132中的每一个(或其某种组合)可以实现全部或部分常驻组件。元数据储存库113包括允许对UI上关联于应用程序128的UI元素进行定制的信息。例如,元数据可以包括允许对用于在监视器142上显示的UI  164的UI表单进行定制的信息。元数据储存库113可以包括用于各耦合的计算设备上的多个应用程序的信息。
用户可通过诸如键盘134和点击设备136(如“鼠标”)这样的输入设备将命令和信息输入到计算机102中。其它输入设备138(未特别示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行接口和/或扫描仪等。这些和其它输入设备通过耦合到系统总线108的输入/输出接口140连接到处理单元104,但也可通过其它接口和总线结构如并行端口、游戏端口或通用串行总线(USB)来连接。
监视器142或其它类型的显示设备也可通过诸如视频适配器144这样的接口与系统总线108相连。除监视器142之外,其它的输出外围设备可包括诸如扬声器(未示出)和打印机146这样的组件,这些组件可通过I/O接口140与计算机102相连。
计算机102可在有一台或多台远程计算机(如远程计算设备148)逻辑连接的网络化环境中工作。举例来说,远程计算设备148可以是PC、便携式计算机、服务器、路由器、网络计算机、对等设备或者其他常见网络节点等。远程计算设备148示出作为可以包括在本文中关于计算机102描述的许多或全部元件和特征的便携式计算机。
计算机102和远程计算机348之间的逻辑连接被描述为局域网(LAN)150和通用广域网(WAN)152。这样的网络化环境常见于办公室、企业计算机网络、内联网和因特网中。
当在LAN网络化环境中应用时,计算机102通过网络接口或适配器154连接到本地网络150。当在WAN网络化环境中应用时,计算机102通常包括调制解调器156或其它用于在广域网152上建立通信的装置。调制解调器156可为计算机102内置或外置,其可通过I/O接口140或其它恰当的机制连接到系统总线108上。示出的网络连接是示例并且也可以利用在计算机102和148之间建立至少一个通信链接的其他装置。
在联网环境中,比如结合计算环境100所示出的,相对计算机102或其部分描绘的程序模块可存储在远程存储器存储设备中。例如,远程应用程序158驻留在远程计算机148的存储设备中。为说明起见,应用程序或程序以及如操作系统这样的其它可执行程序组件在这里以单独的块来阐明,但应到认识到这样的程序和组件多次以计算设备102的不同存储器组件形式存在,并由至少一台计算机数据处理器来执行。
各种模块和技术在本申请中可在诸如程序模块的由一个或多个计算机或其他设备执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括用于执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以在各个实施例中按需进行组合或分布。
这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可由计算机访问的任何可用介质。举例说明,但并非限定,计算机可读介质可包含“计算机存储器介质”和“通信介质”。
“计算机存储器介质”包括易失性和非易失性、可移除和不可移除介质,这样的介质能以任何信息存储的方法或技术来实现,如计算机可读指令、数据结构、程序模块或其它数据。计算机存储器介质包括但不局限于,RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何其它可用于存储所需信息并可由计算机存取的介质。
“通信介质”通常包含计算机可读指令、数据结构、程序模块或者其它包含在已调制数据信号中的数据(如载波或其它传送机制)。通信介质也包括任意的信息传递介质。术语“已调制数据信号”是指以在该信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直线连接这样的有线介质,以及诸如声学、RF、远红外和其它无线介质这样的无线介质。任何以上组合也包括在计算机可读介质的范畴内。
图2示出了一用户界面元数据系统。如图所示,系统200包括元数据210、解释程序220、隐藏代码程序集225、描绘用户界面240和后端数据源250的描绘引擎230。起初,开发人员或某一其他用户指定用于给定UI表单的元数据210。通常,一旦元数据已被创建和指定,解释程序220就访问该元数据并在随后将UI信息传递给描绘引擎230以便向用户显示UI 240。虽然示出的解释程序220与描绘引擎分离,但是如围绕解释程序220和描绘引擎230的虚线框所示,解释程序220的功能可以包括在描绘引擎230内。
元数据210允许开发人员为包括在用户界面240上的每个控件241-243指定一组事件215。元数据210允许UI表单开发人员指定要添加至UI的控件;定义有关这些被添加控件的自定义事件(或者向现有控件添加事件);以及经由隐藏代码程序集225内的代码定义针对这些新的自定义事件的事件处理程序(或者通过覆盖默认行为来修改现有的自定义处理程序)。展示一对象模型(OM),它允许开发人员读取/修改表单上各控件的特性,从而在隐藏代码程序集225中定义事件处理程序。捕捉隐藏代码程序集225的名称和位置作为元数据210的一部分。
根据一个实施例,事件反映出WINFORMS环境中同类型控件支持的典型事件。除了最初受控件支持的标准事件之外,可以通过元数据210来添加附加的控件和自定义事件。
如图所示,描绘引擎230通过解释程序220接收定义UI的元数据并描绘UI表单240。根据一个实施例,描绘引擎230在IBF任务面板内或在MICROSOFT OUTLOOK自定义表单中描绘该UI表单。根据该实施例,描绘引擎230创建一对应于由元数据210定义的UI的.NET控件对象,并且该.NET控件被主存在IBF任务面板内或OUTLOOK自定义表单中。在此实施例中,描绘引擎230解析解释程序220所提供的元数据,实例化由元数据210描述的不同控件(即,241-243)并输出描绘该UI表单的.NET控件。
根据一个实施例,描绘引擎230提供了开发人员在使用元数据210来设计UI表单时能够使用的十个基本控件。这十个基本控件包括:Panel(面板);Label(标签);LinkLabel(链接标签);TextBox(文本框);Button(按钮);ListBox(列表框);ComboBox(组合框);RadioButton(单选按钮);CheckBox(复选框)和Image(图像)控件。如前所述,也可以创建自定义控件和事件。也可提供其它基本控件。
每个控件包括一包装该控件的包装类(即,固有WINFORM(.NET)控件)。该包装提供用于数据绑定以及将控件特性通过程序性对象模型(OM)展示给隐藏代码程序集225的功能。以下是用于文本框控件的示例性包装类:
internal class XamlTextBox:XamlControl,IXamlTextBox
{
       //固有winform(.NET)控件
       private TextBoxtextBox=null;
       ---
}
‘IXamlTextBox(Xaml文本框接口)’接口将TextBox特有的特性展示给隐藏代码文件。应用程序开发人员可以使用该‘IXamlTextBox’接口在隐藏代码中访问UI上的文本框控件,并读取/写入该控件特性。
‘XamlControl(Xaml控件)’提供针对由描绘引擎230描绘的控件的基类。
internal class XamlControl:IXamlControl,IBindable
{
//固有winform(.NET)控件
      protected Control Control=null;
}
‘XamlControl’接口将控件展示给隐藏代码文件。应用程序开发人员可以在隐藏代码程序集225内通过该接口来访问控件性质。‘IBindable(可绑定接口)’接口由‘Binder(绑定程序)’组件用于设置被绑定至数据源内的各特性的控件特性。‘XamlControl’类接收定义该控件的伪XAML元数据(XML)并在随后实例化固有WINFORM(.NET)控件(取决于类型),并为该控件设置在元数据中指定的控件特性。
public XamlControl(XmlNode nodeXml,IControlParent parent,string type)
{
       this.Control=CreateControl(type);
      ---
}
当描绘引擎230接收定义了UI表单的伪XAML元数据时,它读取/解析输入XML并实例化用于该控件的包装类,同时传入定义该控件的元数据。根据一个实施例,以深度优先的方式完成解析。也可以使用其他方法。包装类实例化固有WINFORM(.NET)控件并按照元数据内所定义的来设置控件特性。针对每个控件的包装类按照元数据内所指定的那样设置控件特性。‘XamlControl’基类设置每个控件公用的特性(例如,Background(背景)、Foreground(前景)、Anchor(锚)、Font(字体)等)。特定的导出类诸如:‘XamlTextBox’处理控件(文本框)特有的特性。如果将一特定控件特性与诸如数据源250等数据源内一特性相绑定,则该包装类将该控件、特性名和绑定表达式传递给‘Binder’,后者随后从该数据源获取特性值并在随后通过‘IBindable’接口设置该特定的控件特性。针对每个控件的包装类还订阅由伪XAML元数据展示的控件事件(SubscribeToEvents()(订阅事件))。当一控件上的事件激发时,描绘引擎230就把该事件转发给隐藏代码程序集225中定义的事件处理程序。包装类还调用‘GetChildControls()’(获取子控件)方法来实例化该控件的子控件。
可以开发用于表单上出现的控件事件的事件处理程序226。为了处理控件上的特定事件,开发人员执行以下步骤:开发包含事件处理程序代码的隐藏代码程序集225;指定元数据中的隐藏代码程序集;以及指定处理控件的一特定事件的事件处理程序(方法)名。根据一个实施例,为了在元数据中指定针对控件上的一事件的事件处理程序,开发人员提供隐藏代码程序集内存在的事件处理程序方法名作为对应于该控件上的事件的属性值。元数据210指定对于Button控件的“Click(点击)”事件由方法“ButtonClick(按钮点击)”进行处理,该方法作为一公有方法存在于隐藏代码程序集中。根据一个实施例,事件处理程序的签名与在.NET WINFORMS环境情况下用于该特定控件上的事件的相同。例如,用于Button上的点击事件的事件处理程序可以具有以下签名:public void ButtonClick(object sender,System.EventArgs e){}。根据一个实施例,这是与向程序员提供理解和一致性的原始按钮控件相同的签名。
描绘引擎230在其解析由解释程序220提供的元数据210时加载隐藏代码程序集225,并通过反射(reflection)来实例化隐藏代码类。控件上的通过元数据展示的事件会在该元数据的解析期间实例化该控件时被订阅。在一个实现中,用于控件事件的事件处理程序将该事件冒泡至“Page(页面)”级,随后则通过反射调用该隐藏代码程序集内的事件处理程序。一个以上的“隐藏代码”程序集可以关联至“页面”或表单。提供一个以上的“隐藏代码”程序集允许多级(多方)扩展。
数据还可以从后端数据源250绑定至一个或多个控件(例如,控件241-243)。根据一个实施例,在元数据中指定将数据源250绑定至一个或多个控件(例如,控件241-243)的绑定表达式。控件(即,控件241-243)的每个特性都能够被绑定至来自数据源的数据。数据源于是就在数据源250改变时改变了与各控件相关联的控件特性。可以绑定一个以上的数据源。例如,控件1(241)可以绑定至一个数据源,而控件2(242)则绑定至一个不同的数据源。根据一个实施例,存在两类不同的数据源,包括对象数据源和XML数据源。对象数据源是驻留在.NET程序集内用作UI上的控件的数据源的.NET类。XML数据源用作在定义UI的XAML元数据中被内联指定的XML数据的源。
根据一个实施例,可以根据如下方式在元数据内指定对象数据源:
<xaml:ObjectDataSource Name=″myDataSource″
TypeName=″DataSourceNamespace,DataSourceClass,DataSourceAssembly″/>
“DataSourceClass(数据源类)”实现“IBindData(绑定数据接口)”
“INotifyPropertyChanged(通知特性改变接口)”接口。如下将描述这些接口的示例性实施例。
public interface IBindData
{
      object GetData(string path);//收集数据
      bool SetData(string path,object val);//分散数据
}
在此实施例中,“IBindData”接口允许通过标准.NET事件委托模型在数据源和控件特性之间绑定数据(下文解释)。
    public interface INotifyPropertyChanged
    {
           event PropertyChangedEventHandler PropertyChanged;
    }
    public delegate void PropertyChangedEventHandler(object sender,
PropertyChangedEventArgs e);
    public class PropertyChangedEventArgs:System.EventArgs
    {
           public virtual string PropertyName{get;}
    }
“INotifyPropertyChanged”接口允许数据源发信号通知在该数据源上发生的任何变化,从而能够更新被绑定至该数据源的UI特性。只要数据源内的特性变化,该数据源就引发“PropertyChanged(特性改变)”事件。随后只要该事件激发就更新UI上的相关特性。一旦在元数据内指定了数据源,随后就将可将一控件的任何特性绑定至来自该数据源的数据。
为了指定针对控件特性的绑定,开发人员提供绑定表达式作为对应于该特性的属性值。例如,为了绑定文本框的“Text(文本)”特性,开发人员可以如下在元数据210中指定绑定表达式:<xaml:TextBox Name=″textBoxl″Top=″40″Left=″8″Width=″200″Text=″{Binding Source=DataSourceName,Path=CustomerName,Mode=TwoWay}″Anchor=″Top,Left,Right″/>。表达式Text=“{Binding Source=DataSourceName,Path=CustomerName,Mode=TwoWay}”是用于“Text”特性的绑定表达式。‘Source’子句指在元数据中定义的数据源。这可以是对象数据源或XML数据源。在对象数据源的情况下,当检索绑定特性的值时将‘Path(路径)’子句的值传递给该数据源的“GetData(string path)”方法。对于XML数据源,‘Path’子句在此实施例中是Xpath表达式,它在XML数据中选择其值将被绑定至该控件特性的特定节点/属性。‘Mode(模式)’子句指示‘OneWay(单向)’或‘TwoWay(双向)’绑定。如果数据从该数据源流向UI上的控件,则绑定是‘OneWay’,但若UI特性改变也可从数据源传播回来,则绑定就是‘TwoWay(双向)’的。‘UpdateSourceTrigger(更新源触发信号)’是指定何时(什么事件)会发信号通知该数据源已有一UI特性改变并此改变的特性值需要被传播至数据源的枚举。在此实施例中,该子句的值默认为“PropertyChanged”,这意味着在绑定特性改变时将发信号通知数据源。根据一个实施例,这仅在‘TwoWay’绑定的情况下有效。
List控件的‘ItemsSource(项目源)’属性允许将列表中的各项目绑定至来自数据源的各对象的集合。在“ItemsSource”特性被绑定时,数据源随后返回一实现‘System.Collections.IEnumerable(系统.集合.可枚举接口)’接口的.NET集合。List控件的‘DisplayMemberPath(显示成员路径)’属性指定形成上述集合的.NET对象的特性,其值被用作列表控件内的项目的显示文本。如果该‘DisplayMemberPath’为空,则随后对该.NET对象调用默认的‘ToString()’方法并将返回的字符串用作上述显示文本。例如,假设数据源返回在列表控件中示出的‘Customer(客户)’对象的集合,则该‘Customer’可以具有其值将被用作列表控件中的显示文本的‘Name(名称)’特性。在此情况下,‘DisplayMemberPath’被设置为‘Name’。类似地,‘SelectedValuePath(所选值路径)’被设置为形成上述集合的.NET对象的特性,其值当在该列表控件中选择一特性项目时由列表控件的‘SelectedValue(所选值)’特性返回。例如,假设‘Customer’对象具有‘CustomerID(客户ID)’特性,其值在该列表控件的‘SelectedValuePath’特性被设置为‘CustomerID’时由‘SelectedValue’特性返回。如果没有提供‘SelectedValuePath’属性,则由该列表控件的‘SelectedValue’特性返回整个对象(‘Customer’对象)。
在XML数据源的情况下,列表控件的‘ItemsSource’属性的绑定表达式返回一XML节点列表。例如,假设以下是一XML数据源:
<XmlDataSource Name=″BookData″>
  <Books xmlns=″″>
     <Book ISBN=″0-7356-0562-9″Stock=″in″>
        <Title>XML in Action</Title>
        <Summary>XML Web Technology</Summary>
     </Book>
    <Book ISBN=″0-7356-1370-2″Stock=″in″>
       <Title>Programming Microsoft Windows With C#</Title>
   <Summary>C# Programming using the.NET Framework</Summary>
    </Book>
    <Book ISBN=″0-7356-1288-9″Stock=″out″>
       <Title>Inside C#</Title>
       <Summary>C# Language Programming</Summary>
    </Book>
    <Book ISBN=″0-7356-1377-X″Stock=″in″>
       <Title>Introducing Microsoft.NET</Title>
       <Summary>Overview of.NET Technology</Summary>
    </Book>
    <Book ISBN=″0-7356-1448-2″Stock=″out″>
       <Title>Microsoft C# Language Specifications</Title>
       <Summary>The C# language definition</Summary>
    </Book>
  </Books>
</XmlDataSource>
示出了书籍列表的该列表的‘ItemsSource’特性的绑定表达式为:<ListBoxItemsSource=″{Binding Source=BookData,Path=/Books/Book}″/>。在上述绑定表达式中的‘Path’子句实际上是返回一节点列表的Xpath表达式,这些节点是从XML数据源填充在列表控件内的。列表控件的‘DisplayMemberPath’属性应该是Xpath(在XmlDataSource的情况下),它选择其值被用作列表控件内显示文本的节点/属性。例如,如果UI表单开发人员想要在列表控件内为每本书显示‘Title(标题)’,则该用户的XML看上去如下:<ListBoxItemsSource=″{Binding Source=BookData,Path=/Books/Book}″DisplayMemberPath=″Title″/>。类似地,在该列表控件的‘SelectedValuePath’属性指向其值由该列表的‘SelectedValue’属性返回的列表项的节点/属性。
例如,假设UI表单开发人员想要在列表中特定的一本书被选时在该列表的‘SelectedValue’特性内返回针对一本书的‘ISBN’值,则该‘SelectedValuePath’属性可以是指向该书项目的‘ISBN’属性的Xpath。
<ListBox ItemsSource=″{Binding Source=BookData,Path=/Books/Book}″DisplayMemberPath=″Title″SelectedValuePath=″ISBN″/>
利用数据绑定的控件如下所示地实现‘IBindable’接口:
public interface IBindable
{
       object GetBoundValue(string propName);
       void SetBoundValue(string propName,object val);
}
在最初描绘UI表单240时,为每个绑定特性调用相关数据源(在绑定表达式中指定)的‘GetData(string path)’方法,同时将绑定表达式中‘Path’子句的值作为自变量传入。该方法返回类型为‘object(对象)’的值。接下来,在其特性被绑定的控件上调用‘SetBoundValue(string propName,object value)’,同时传入绑定特性的名称以及由数据源返回的‘value(值)’。控件负责理解该‘value’对象并解释该对象以更新绑定特性。除了UI表单的初始描绘之外,只要数据源改变,该数据源就发信号通知绑定程序数据源内的改变(INotifyPropertyChanged)。绑定程序找出要绑定至改变的元数据的控件特性,并更新这些特性。在‘TwoWay’绑定的情况下,只要UI表单上的绑定UI特性改变,就通知绑定程序,而该绑定程序就把改变的特性值传播回数据源。
如前所述,描绘引擎230还提供用于主存自定义构建控件的通用框架。根据一个实施例,该框架支持自定义.NET winform控件。根据一个实施例,任何自定义控件皆从以下类导出:‘System.Windows.Forms.UserControl’。每个自定义控件具有默认构造函数,并且也实现ICustomControl接口和‘IBindable’接口,使其能够参与数据绑定。以下是示例性的‘ICustomControl’接口:
public interface ICustomControl
{
       void SetControlProperty(string propName,string propValue);
       event ControlEventFiredHandler ControlEventFired;
}
public delegate void ControlEventFiredHandler(object sender,ControlEventFiredArgs e);
public class ControlEventFiredArgs:System.EventArgs
{
       public string EventName{get;}
       public object Sender{get;}
       public object EventArgs{get;}
}
‘SetControlProperty(string propName,string propValue)’方法由描绘引擎230用于为该控件设置自定义特性。对于该自定义控件展示的且不包括在一控件的基本特性(例如,Width(宽)、Height(高)、Top(顶)、Left(左)等)的每个自定义特性而言,描绘引擎230对该自定义控件调用‘SetControlProperty’方法,而该自定义控件则有能力理解并解释在要传递给该‘SetControlProperty’方法的元数据中所指定的‘string(串)’特性值。
‘ControlEventFired(控件事件激发)’事件在控件激发展示一自定义事件时由该自定义控件引发。这会发信号通知描绘引擎230一事件已在该自定义控件上激发,并且该描绘引擎需要调用隐藏代码程序集225中针对该事件的事件处理程序(如果有的话)。描绘引擎230在编译时不知道该自定义控件支持什么事件(和事件签名)。同样地,描绘引擎230要求自定义控件在该自定义控件上有自定义事件激发时对其进行通知。该自定义控件创建‘ControlEventFiredArgs(控件事件激发自变量)’类的一个实例,并且将它传递给由描绘引擎230接收的‘ControlEventFired(控件事件激发)’事件。‘ControlEventFiredArgs’包含有关激发的事件的名称、发送者以及需要传递给针对该事件的事件处理程序的事件自变量的信息。一旦描绘引擎230具有这些信息,它就能调用在隐藏代码程序集225中指定的针对该事件的事件处理程序。
根据一个实施例,该自定义控件在运行时驻留在.NET程序集内。可以用以下方法在元数据内指定自定义控件程序集:<xaml:Mapping XmlNamespace=″urn-Mendocino/CustomControls″
ClrNamespace=″CustomControlNamespace″Assembly=″CustomControlAssembly,
Version=1.0.0.0,Culture=neutral,PublicKeyToken=null″/>。‘Mapping(映射)’元素是一处理伪指令而非XML元素。也可以利用其他指定自定义控件程序集的方法。
通过以下示例性元数据,可以在该元数据内指定自定义控件:<custom:CustomControl xmlns:custom=″urn-Mendocino/CustomControls″Top=″0″Left=″0″Height=″100″Width=″100″.../>。在此实施例中,描绘引擎230通过反射来实例化该自定义控件,并首先设置诸如Height、Width、Top、Left等的控件基本特性,随后该描绘引擎230针对其他特性(自定义特性)对该自定义控件调用‘SetControlProperty()’方法。
元数据模式内的一机制允许UI表单开发人员访问各UI控件及其在隐藏代码程序集内的各种特性。隐藏代码类如下描述地实现‘IPageCodeBehind(页面隐藏代码接口)’接口:
public interface IPageCodeBehind
{
       string Name{get;set;}
       IPageControlCollection PageControls{get;set;}
       object Application{get;set;}
       object Mediator{get;set;}
       object ReturnValue{get;set;}
}
‘PageControls(页面控件)’特性在描绘引擎230描绘UI表单并实例化各控件时由该描绘引擎230填充。‘Application(应用程序)’特性表示在其中描绘了UI表单的宿主应用程序(即,OUTLOOK)。根据一个实施例,‘Mediator(居间程序)’特性允许隐藏代码开发人员执行在元数据内定义的IBF动作。‘Return Value(返回值)’是可由隐藏代码开发人员设置并被传递回描绘该表单的调用者的变量。这可用于模态对话框的情况,以便将一值从对话框传递回调用者。
以下是示例性的‘IPageControlCollection(页面控件集合接口)’接口:
public interface IPageControlCollection:ICollection,IEnumerable
{
       IXamlControl this[string name]{get;}
}
‘IXamlControl’接口展示针对该表单上的一控件的各特性。
public interface IXamlControl
{
       //特性...
       string Name{get;set;}
       int Top{get;set;}
       int Left{get;set;}
       Color Background{get;set;}
       bool IsEnabled{get;set;}
       int Height{get;set;}
       int Width{get;set;}
       //其他特性//...
}
这允许UI表单开发人员按以下方式访问表单上的控件:MessageBox.Show(this.PageControls[″myButton″].Text);‘IXamlControl’接口展示每个控件公用的控件基本特性。为了访问一控件的特有特性(例如,CheckBox控件的IsChecked(是否被复选)),开发人员能够将该‘IXamlControl’对象进行强制类型转换成诸如以下各项的特定控件接口:‘IXamlCheckBox’、‘IXamlTextBox’等等。
((IXamlCheckBox)this.PageControls[″myCheckBox″]).IsChecked
以下是从‘IXamlControl’接口导出的‘IXamlCheckBox(Xaml复选框接口)’接口:
public interface IXamlCheckBox:IXamlControl
{
       //CheckBox特有特性...
       ContentAlignment TextAlignment{get;set;}
       bool IsChecked{get;set;}
}
展示针对各控件的类似的特有接口,从而允许UI表单开发人员访问控件特有的特性。
根据一个实施例,描绘引擎230从描述该UI表单的元数据中生成相同的.NET控件,而不考虑该UI表单是被主存在IBF任务窗格、OUTLOOK自定义表单还是一对话框中。以下场景提供了如何主存.NET控件的示例。
根据一个实施例,IBF任务窗格支持主存实现‘IRegion(区域接口)’接口的任何.NET控件。描绘控件包含一空白(空).NET控件,该控件实现‘IRegion’接口并且主存来自UI元数据的、由UI描绘引擎生成的.NET控件。为了在IBF任务窗格中显示一元数据定义的UI表单,使用‘MSIBF.UI.ShowRegion’(显示区域)自定义操作,该操作显示该UI描绘框架的空白.NET宿主控件部分。传递给该‘MSIBF.UI.ShowRegion’操作的输入是定义要主存在该IBF任务窗格内的UI表单的元数据。该MSIBF.UI.ShowRegion’操作实例化上述空白宿主.NET控件,并将定义了UI表单的元数据作为‘Data(数据)’传递给该空白宿主.NET控件。宿主控件调用描绘引擎230,同时传入定义了UI表单的元数据,并且该描绘引擎230返回描述了该UI表单的.NET控件并在随后被添加至宿主控件,以得到IBF任务窗格中的UI表单的显示。
根据另一实施例,为了在OUTLOOK中主存描述一UI表单的.NET控件,把能够主存.NET控件的ActiveX容器添加至该OUTLOOK表单,并在随后添加描述该UI表单的.NET控件以作为该容器控件的子控件。该ActiveX容器控件是UI描绘框架的一部分。根据一个实施例,Forms 2.0(表单2.0)主存ActiveX容器,而该ActiveX容器则主存由元数据描述的.NET WinForms控件。
也可以在模态.NET Winfbrm对话框中创建元数据定义的表单。在此实施例中,诸如包含在插件中的程序代码调用描绘引擎230,同时传入定义了表单的XAML元数据,并且该描绘引擎230传回从XAML元数据中生成的.NET控件,而该.NET控件随后可以被主存在IBF任务窗格、OUTLOOK自定义表单或是一对话框中。插件实例化‘RenderEngine(描绘引擎)’类的一个实例,而后者则实现‘IRenderEngine(描绘引擎接口)’接口:
public interface IRenderEngine
{
       IXamlPage CreateXamlForm(XmlNode pageXml);
}
调用者能够调用‘CreateXamlForm(创建Xaml表单)’方法,同时传入描述该表单的XAML元数据。描绘引擎230实例化必需的控件并且传回表示该‘xaml’表单的对象(‘IXamlPage(Xaml页面接口)’)。
public interface IXamlPage
{
       string Name{get;}
       Control NativeControl{get;}
       IPageControlCollection Controls{get;}
       object RetumValue{get;}
}
在此实施例中,上述‘NativeControl(固有控件)’特性表示可以被主存在IBF任务窗格、OUTLOOK自定义表单或是一对话框中的描述该元数据UI表单的.NET控件。‘RetumValue’特性是能够从隐藏代码文件中设置并且可用于从一模态对话框返回一值的变量。
图3A和3B示出了由元数据文件描述的示例UI表单。参见图3A,UI表单300包括标签305、页面310、面板315、文本框320、复选框325、链接330、按钮335、列表框340和单选按钮列表345。
图3B示出了可用于定义如图3A所示的UI表单300的示例性UI元数据文件360。该示例性UI元数据文件360示出了由对应的XML节点的各属性指定的一控件的各特性。根据一个实施例,大多数特性具有一默认值并且无需被特别指定。如图3B所示,指示符362示出了对面板310的描述;指示符364示出了对标签305的描述;指示符366示出了对文本框320的描述;指示符368示出了对复选框325的描述;指示符370示出了对按钮335的描述;指示符372示出了对链接330的描述;指示符374示出了对列表框340的描述,而指示符376示出了对单选按钮列表345的描述。
图4示出了一种使用元数据来描述UI表单的过程。在开始操作之后,该过程移至其中定义元数据文件的操作410。如上所述,该文件中的元数据描述了UI并且包括有关控件、数据绑定的信息以及其他关于用户界面的相关信息。
移至操作420,存储该元数据文件。根据一个实施例,将该元数据文件存储在诸如硬盘驱动器等计算机可读介质上。该元数据文件可以本地存储和/或远离显示该相关UI的计算设备来存储。
转换至操作430,访问该元数据文件。根据一个实施例,由描绘引擎访问该元数据文件。作为替换,如上所述,可使用解释程序来访问该元数据文件。
流程行进至操作440,可以将零或更多个数据源绑定至通过该元数据为UI定义的一个或多个控件。
移至操作450,解释该元数据并在随后对其进行描绘以显示UI。在UI上描绘UI表单的每个控件(参见图5及相关讨论)。
随后该过程移至结束操作并返回以处理其它动作。
图5示出了一种用关联元数据描绘UI表单的过程。在开始操作之后,该过程移至在其中对控件进行实例化的操作510。基于控件类型(即,标签、文本框等)实例化该控件。
流程行进至操作520,设置控件的基本特性。例如,设置诸如顶、左、高、宽等的特性。
移至操作530,设置控件特性。该控件特性的设置依赖于控件类型。
接下来在操作540,订阅在元数据内指定的控件事件。流程行进至操作550,实例化该控件的任何子控件。随后该过程移至结束操作并返回以处理其它动作。
以下是使用元数据来定义UI表单的示例性模式:
<?xml version=″1.0″encoding=″utf-8″?>
<xs:schema targetNamespace=″urn-Mendocino/xaml″
       elementFormDefault=″qualified″
       xmlns:xaml=″urn-Mendocino/xaml″
       xmlns:xs=″http://www.w3.org/2001/XMLSchema″
  <xs:complexType name=″ControlType″>
     <xs:attributeGroup ref=″xaml:ControlTypeAttributes″/>
</xs:complexType>
  <xs:complexType name=″ParentControlType″>
     <xs:complexContent>
         <xs:extension base=″xaml:ControlType″>
             <xs:sequence>
 <xs:element ref=″xaml:Control″minOccurs=″0″maxOccurs=″unbounded″/>
             </xs:sequence>
         </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″PageType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ParentControlType″>
            <xs:sequence>
                <xs:element ref=″xaml:ObjectDataSource″minOccurs=″0″
            maxOccurs=″unbounded″/>
               <xs:element ref=″xaml:XmlDataSource″minOccurs=″0″
            maxOccurs=″unbounde d″/>
            </xs:sequence>
<!--事件-->
<xs:attribute name=″Load″type=″xs:string″use=″optional″/>
<!--隐藏代码程序集-->
    <xs:attribute name=″Assembly″type=″xs:string″use=″optional″/>
    <xs:attribute name=″TypeName″type=″xs:string″use=″optional″/>
    </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″ObjectDataSourceType″>
    <xs:attribute name=″Name″type=″xs:string″use=″required″/>
    <!--数据源类-->
    <xs:attribute name=″TypeName″type=″xs:string″use=″optional″/>
    <xs:attribute name=″Parameters″type=″xs:string″use=″optional″/>
</xs:complexType>
<!--内联XML数据源-->
<xs:complexType name=″XmlDataSourceType″>
    <xs:sequence>
        <xs:any processContents=″skip″/>
    </xs:sequence>
    <xs:attribute name=″Name″type=″xs:string″use=″require d″/>
</xs:complexType>
<xs:complexType name=″PanelType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ParentControlType″>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″LabelType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ControlType″>
<xs:attribute name=″TextAlignment″type=″xs:string″use=″optional″/>
        </xs:extension>
   </xs:complexContent>
</xs:complexType>
<xs:complexType name=″TextBoxType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ControlType″>
<xs:attribute name=″TextAlignment″type=″xs:string″use=″optional″/>
<xs:attribute name=″MaxLength″type=″xs:string″use=″optional″/>
<xs:attribute name=″MinLines″type=″xs:string″use=″optional″/>
<xs:attribute name=″Wrap″type=″xs:string″use=″optional″/>
        </ks:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″ButtonType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ControlType″>
  <xs:attribute name=″TextAlignment″type=″xs:string″use=″optional″/>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″LinkLabelType″>
    <xs:complexContent>
        <xs:extension base=″xaml:ControlType″>
 <xs:attribute name=″TextAlignment″type=″xs:string″use=″optional″/>
 <xs:attribute name=″LinkBehavior″type=″xs:string″use=″optional″/>
         </xs:extension>
     </xs:complexContent>
</xs:complexType>
<xs:complexType name=″ImageType″>
    <xs:complexContent>
       <xs:extension base=″xaml:ControlType″>
       <xs:attribute name=″Source″type=″xs:string″use=″required″/>
       </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:complexType name=″CheckBoxType″>
       <xs:complexContent>
         <xs:extension base=″xaml:ControlType″>
  <xs:attribute name=″TextAlignment″type=″xs:string″use=″optional″/>
  <xs:attribute name=″IsChecked″type=″xs:string″use=″optional″/
               <!--事件-->
  <xs:attribute name=″IsCheckedChanged″type=″xs:string″use=″optional″/>
         </xs:extension>
     </xs:complexContent>
 </xs:complexType>
<!--列表控件类型-->
<xs:complexType name=″ListControlType″>
     <xs:complexContent>
         <xs:extension base=″xaml:ControlType″>
<xs:attribute name=″DisplayMemberPath″type=″xs:string″use=″optional″/>
<xs:attribute name=″SelectedValuePath″type=″xs:string″use=″optional″/>
<xs:attribute name=″SelectedValue″type=″xs:string″use=″optional″/>
<xs:attribute name=″ItemsSource″type=″xs:string″use=″optional″/>
<xs:attribute name=″SelectedIndex ″type=″xs:string″use=″optional″/>
               <!--事件-->
  <xs:attribute name=″SelectionChanged″type=″xs:string″use=″optional″/>
  <!--
               <xs:sequence>
               <xs:element ref=″xaml:ListControlItem″minOccurs=″0″
           maxOccurs=″unbounded″/>
               </xs:sequence>
               -->
            </xs:exteusion>
       </xs:complexContent>
  </xs:complexType>
  <!--<xs:element name=″ListControl″type=″xaml:ListControlType″
abstract=″true″/>-->
  <xs:simpleType name=″ListControlItemType″>
       <xs:restriction base=″xs:string″>
       </xs:restriction>
  </xs:simpleType>
  <xs:element name=″ListControlItem″type=″xaml:ListControlItemType″
abstract=″true″/>
  <xs:element name=″ListBoxItem″type=″xaml:ListControlItemType″
substitutionGroup=″xaml:ListControlItem″/>
  <xs:element name=″ComboBoxItem″type=″xaml:ListControlItemType″
substitutionGroup=″xaml:ListControlItem″/>
  <xs:element name=″RadioButton″type=″xaml:ListControlItemType″
substitutionGroup=″xaml:ListControlItem″/>
  <xs:complexType name=″ListBoxType″>
      <xs:complexContent>
          <xs:extension base=″xaml:ListControlType″>
              <xs:sequence>
                  <xs:element ref=″xaml:ListBoxItem″minOccurs=″0″
maxOccurs=″unbounded″/>
              </xs:sequence>
              <xs:attribute name=″SelectionMode″type=″xs:string″
use=″optional″/>
          </xs:extension>
      </xs:complexContent>
 </xs:complexType>
 <xs:complexType name=″ComboBoxType″>
      <xs:complexContent>
          <xs:extension base=″xaml:ListControlType″>
               <xs:sequence>
                  <xs:element ref=″xaml:ComboBoxItem″minOccurs=″0″
maxOccurs=″unbounded″/>
               </xs:sequence>
               <xs:attribute name=″DropDownStyle″type=″xs:string″
use=″optional″/>
              </xs:extension>
          </xs:complexContent>
      </xs:complexType>
      <xs:complexType name=″RadioButtonListType″>
         <xs:complexContent>
            <xs:extension base=″xaml:ListControlType″>
               <xs:sequence>
                  <xs:element ref=″xaml:RadioButton″minOccurs=″0″
maxOccurs=″unbounded″/>
               </xs:sequence>
           </xs:extension>
       </xs:complexContent>
   </xs:complexType>
   <!--UI元素-->
   <xs:element name=″Control″type=″xaml:ControlType″abstract=″true″/>
   <xs:element name=″Page″type=″xaml:PageType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″ObjectDataSource″type=″xaml:ObjectDataSourceType″/>
  <xs:element name=″XmlDataSource″type=″xaml:XmlDataSourceType″/>
  <xs:element name=″Panel″type=″xaml:PanelType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″ListBox″type=″xaml:ListBoxType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″ComboBox″type=″xaml:ComboBoxType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″RadioButtonList″type=″xaml:RadioButtonListType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″Label″type=″xaml:LabelType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″TextBox″type=″xaml:TextBoxType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″Button″type=″xaml:ButtonType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″CheckBox″type=″xaml:CheckBoxType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″Image″type=″xaml:ImageType″
substitutionGroup=″xaml:Control″/>
  <xs:element name=″LinkLabel″type=″xaml:LinkLabelType″
substitutionGroup=″xaml:Control″/>
  <!--控件属性-->
  <!--由于所有属性值实际上可以是绑定表达式,因此对每一属性的类型
xs:string-->
  <xs:attributeGroup name=″ControlTypeAttributes″>
      <!--特性-->
      <!--Top和Left可以是必需的,但是使其成为可任选的也是可行的-->
  <xs:attribute name=″Top″type=″xs:string″default=″0″use=″optional″/>
  <xs:attribute name=″Left″type=″xs:string″default=″0″use=″optional″/>
  <xs:attribute name=″Width″type=″xs:string″use=″optional″/>
  <xs:attribute name=″Height″type=″xs:string″use=″optional″/>
  <xs:attribute name=″Anchor″type=″xs:string″use=″optional″/>
<!--此处可能已经指定了Anchor值的枚举,但是由于这也可以是绑定表达式,因此必须保持其为简单的字符串-->
<xs:attribute name=″Background″type=″xs:string″use=″optional″/>
<xs:attribute name=″Foreground″type=″xs:string″use=″optional″/>
<xs:attribute name=″FontFamily″type=″xs:string″use=″optional″/>
<xs:attribute name=″FontSize″type=″xs:string″use=″optional″/>
  <xs:attribute name=″FontStyle″type=″xs:string″use=″optional″/>
  <xs:attribute name=″Name″type=″xs:string″use=″required″/>
  <xs:attribute name=″Tag″type=″xs:string″use=″optional″/>
  <xs:attribute name=″TabIndex″type=″xs:string″use=″optional″/>
  <xs:attribute name=″IsEnable d″type=″xs:string″use=″optional″/>
  <xs:attribute name=″Visibility″type=″xs:string″use=″optional″/>
  <xs:attribute name=″ToolTip″type=″xs:string″use=″optional″/>
  <xs:attribute name=″Text″type=″xs:string″use=″optional″/>
  <!--事件-->
  <xs:attribute name=″Click″type=″xs:string″use=″optional″/>
  <xs:attribute name=″GotFocus″type=″xs:string″use=″optional″/>
  <xs:attribute name=″LostFocus″type=″xs:string″use=″optional″/>
  <xs:attribute name=″KeyUp″type=″xs:string″use=″optional″/>
  <xs:attribute name=″KeyDown″type=″xs:string″use=″optional″/>
  <xs:attribute name=″MouseUp″type=″xs:string″use=″optional″/>
  <xs:attribute name=″MouseDown″type=″xs:string″use=″optional″/>
<xs:attribute name=″TextChanged″type=″xs:string″use=″optional″/>
</xs:attributeGroup>
    </xs:schema>
以上说明、示例和数据提供了对本发明成分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。

Claims (20)

1.一种用于创建元数据驱动的用户界面的方法,包括:
从一文件访问用于定义用户界面的基于XML的元数据,其中所述元数据定义所述用户界面内的各控件,所述控件的每一个被一包装类包装,所述包装提供用于数据绑定以及将控件特性通过程序性对象模型展示给隐藏代码程序集的功能,其中通过在所述元数据中为一个或多个控件中的每一个指定事件名和处理所述事件的方法名以使所述一个或多个控件的元数据展示事件,并且其中所述元数据支持:
使用包括在所述元数据内指定数据源的绑定表达式将数据绑定至所述用户界面的一控件的特性;
指定针对所述隐藏代码程序集中一控件的事件的事件处理程序,其中事件被展示给隐藏代码程序集,其中通过所述隐藏代码程序集访问所述控件的特性;以及
根据所述元数据描绘所述用户界面。
2.如权利要求1所述的方法,其特征在于,所述元数据还支持在程序上修改各个控件的机制。
3.如权利要求2所述的方法,其特征在于,还包括根据元数据模式创建所述用户界面的元数据并将所述元数据存储在文件中。
4.如权利要求3所述的方法,其特征在于,所述元数据定义了与所述用户界面内的各控件相关联的各特性并且定义了各控件在所述用户界面内的布局。
5.如权利要求2所述的方法,其特征在于,所述元数据提供了定义自定义控件以及在所述用户界面内包括标准控件的能力。
6.如权利要求2所述的方法,其特征在于,在程序上修改所述控件包括提供对隐藏代码程序集的访问。
7.如权利要求6所述的方法,其特征在于,所述隐藏代码程序集在所述元数据内指定。
8.如权利要求6所述的方法,其特征在于,还包括展示被配置为允许对所述控件的各特性进行读取和修改的对象模型。
9.如权利要求5所述的方法,其特征在于,所述元数据内的绑定表达式还包括指定数据绑定模式。
10.如权利要求9所述的方法,其特征在于,所述绑定表达式还包括路径。
11.如权利要求10所述的方法,其特征在于,所述数据源包括对象数据源和XML数据源中的至少一种。
12.如权利要求3所述的方法,其特征在于,所述元数据模式是XML模式并且提供文本框类型;按钮类型;链接类型;图像类型;复选框类型;列表控件类型;以及单选列表类型。
13.一种使用元数据来创建用户界面的方法,包括:
从一文件访问定义了用户界面的各控件的元数据,所述控件的每一个被一包装类包装,所述包装提供用于数据绑定以及将控件特性通过程序性对象模型展示给隐藏代码程序集的功能;其中所述元数据是根据一元数据模式来创建的;其中通过在所述元数据中指定事件名和处理所述事件的方法名以使所述一个或多个控件的元数据展示事件;
通过指定绑定表达式将数据源绑定至所述用户界面内的至少一个控件,所述绑定表达式包括所述元数据中的数据源;其中所述数据源可以从对象数据源和XML数据源中选择,其中所述绑定表达式被用于将用户界面特性改变传播回数据源;以及
根据所述元数据描绘所述用户界面。
14.如权利要求13所述的方法,其特征在于,还包括使用所述元数据模式用以在程序上修改各控件并支持针对各控件的数据处理。
15.如权利要求14所述的方法,其特征在于,还包括提供针对由描述引擎描绘的控件的基类。
16.如权利要求15所述的方法,其特征在于,所述包装类包装每个固有.NET控件。
17.如权利要求14所述的方法,其特征在于,根据所述元数据描绘所述用户界面包括按照所述元数据针对每个控件的定义来设置各控件特性。
18.如权利要求17所述的方法,其特征在于,还包括开发包含事件处理程序代码的隐藏代码程序集;在所述元数据中指定所述隐藏代码程序集;以及指定处理针对一控件的特性事件的事件处理程序。
19.一种使用元数据来描绘用户界面的方法,包括:
存储指定用户界面内的各控件的元数据文件,所述控件的每一个被一包装类包装,所述包装提供用于数据绑定以及将控件特性通过程序性对象模型展示给隐藏代码程序集的功能,其中文件中的所述元数据包括用于将数据绑定至所述用户界面的一个或多个控件的绑定表达式,所述绑定表达式包括在元数据内指定数据源,其中所述绑定表达式被用于将用户界面特性改变传播回数据源;其中通过在所述元数据中指定事件名和处理所述事件的方法名以使所述一个或多个控件的元数据展示事件;以及
解释所述元数据并根据所述元数据来描绘所述用户界面。
20.如权利要求19所述的方法,其特征在于,所述元数据是根据包括以下机制的元数据模式来创建的:在所述用户界面内创建各控件;在程序上修改各控件,并支持针对各控件的事件处理。
CN2006800455212A 2005-12-05 2006-12-05 元数据驱动的用户界面 Expired - Fee Related CN101322096B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US74224005P 2005-12-05 2005-12-05
US60/742,240 2005-12-05
US11/418,829 US8095565B2 (en) 2005-12-05 2006-05-05 Metadata driven user interface
US11/418,829 2006-05-05
PCT/US2006/046464 WO2007067578A1 (en) 2005-12-05 2006-12-05 Metadata driven user interface

Publications (2)

Publication Number Publication Date
CN101322096A CN101322096A (zh) 2008-12-10
CN101322096B true CN101322096B (zh) 2012-10-10

Family

ID=38120015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800455212A Expired - Fee Related CN101322096B (zh) 2005-12-05 2006-12-05 元数据驱动的用户界面

Country Status (4)

Country Link
US (1) US8095565B2 (zh)
KR (1) KR101331260B1 (zh)
CN (1) CN101322096B (zh)
WO (1) WO2007067578A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549570A (zh) * 2018-04-28 2018-09-18 北京小米移动软件有限公司 用户界面的更新方法及装置

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2451164C (en) * 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
CA2443454A1 (en) * 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
WO2007134265A2 (en) 2006-05-12 2007-11-22 Captaris, Inc. Workflow data binding
US7987443B2 (en) * 2006-10-30 2011-07-26 Hewlett-Packard Development Company, L.P. Declarative association of dialog fields
WO2008103493A1 (en) * 2007-02-23 2008-08-28 Sugarcrm Inc. Customer relationship management portal system and method
US8316309B2 (en) * 2007-05-31 2012-11-20 International Business Machines Corporation User-created metadata for managing interface resources on a user interface
WO2008156640A2 (en) * 2007-06-12 2008-12-24 Smartmicros Usa, Llc A method and apparatus for encoding data
US20080313210A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Content Publishing Customized to Capabilities of Device
US20090037829A1 (en) * 2007-08-01 2009-02-05 Microsoft Corporation Framework to integrate web services with on-premise software
US8560938B2 (en) * 2008-02-12 2013-10-15 Oracle International Corporation Multi-layer XML customization
US8281287B2 (en) * 2007-11-12 2012-10-02 Finocchio Mark J Compact, portable, and efficient representation of a user interface control tree
US20090199112A1 (en) * 2008-02-04 2009-08-06 Deserranno Allen Simplified opc to wpf xaml binding method
US8966465B2 (en) * 2008-02-12 2015-02-24 Oracle International Corporation Customization creation and update for multi-layer XML customization
US8538998B2 (en) * 2008-02-12 2013-09-17 Oracle International Corporation Caching and memory optimizations for multi-layer XML customization
US8875306B2 (en) * 2008-02-12 2014-10-28 Oracle International Corporation Customization restrictions for multi-layer XML customization
US8788542B2 (en) * 2008-02-12 2014-07-22 Oracle International Corporation Customization syntax for multi-layer XML customization
US8229976B2 (en) * 2008-03-27 2012-07-24 Microsoft Corporation Data binding for XML schemas
US8782604B2 (en) * 2008-04-11 2014-07-15 Oracle International Corporation Sandbox support for metadata in running applications
US8082494B2 (en) 2008-04-18 2011-12-20 Microsoft Corporation Rendering markup language macro data for display in a graphical user interface
US9164737B2 (en) * 2008-05-16 2015-10-20 Microsoft Technology Licensing, Llc Augmenting programming languages with a type system
US8667031B2 (en) * 2008-06-13 2014-03-04 Oracle International Corporation Reuse of shared metadata across applications via URL protocol
US9298684B2 (en) * 2008-06-18 2016-03-29 Microsoft Technology Licensing, Llc Implementing custom user interface forms in a personal information manager
KR101502096B1 (ko) 2008-07-22 2015-03-12 삼성전자 주식회사 공기 조화기의 제어 방법
US8209355B2 (en) 2008-07-28 2012-06-26 Microsoft Corporation Automatic user interface generation for entity interaction
US8799319B2 (en) * 2008-09-19 2014-08-05 Oracle International Corporation System and method for meta-data driven, semi-automated generation of web services based on existing applications
US8996658B2 (en) * 2008-09-03 2015-03-31 Oracle International Corporation System and method for integration of browser-based thin client applications within desktop rich client architecture
US9122520B2 (en) 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
US8332654B2 (en) * 2008-12-08 2012-12-11 Oracle International Corporation Secure framework for invoking server-side APIs using AJAX
GB2458755A (en) * 2009-02-24 2009-10-07 Promethean Ltd Creating a document using a software application by associating content with a state of the software application
US9727320B2 (en) * 2009-02-25 2017-08-08 Red Hat, Inc. Configuration of provisioning servers in virtualized systems
US9529648B2 (en) * 2009-06-26 2016-12-27 International Business Machines Corporation Generic declaration of bindings between events and event handlers regardless of runtime structure
US8595236B2 (en) * 2009-11-05 2013-11-26 International Business Machines Corporation Searching existing user interfaces to enable design, development and provisioning of user interfaces
US8856737B2 (en) * 2009-11-18 2014-10-07 Oracle International Corporation Techniques for displaying customizations for composite applications
US20110138335A1 (en) * 2009-12-08 2011-06-09 Sybase, Inc. Thin analytics for enterprise mobile users
EP2513782A1 (en) * 2009-12-14 2012-10-24 Ab Initio Technology LLC Specifying user interface elements
CN102118652A (zh) * 2009-12-31 2011-07-06 康佳集团股份有限公司 网络电视界面中元素位置切换的方法、装置及系统
US20110185294A1 (en) * 2010-01-22 2011-07-28 Microsoft Corporation Pattern-based user interfaces
US20110246913A1 (en) * 2010-03-30 2011-10-06 Microsoft Corporation Automated User Interface Generator
US9513882B2 (en) 2010-04-15 2016-12-06 Microsoft Technology Licensing, Llc Platform independent presentation composition
WO2011160139A1 (en) 2010-06-18 2011-12-22 Sweetlabs, Inc. Systems and methods for integration of an application runtime environment into a user computing environment
CN101976194A (zh) 2010-10-29 2011-02-16 中兴通讯股份有限公司 一种设置用户界面的方法及装置
CN102081361B (zh) * 2010-11-29 2012-08-29 广东威创视讯科技股份有限公司 一种硬件设备控制方法及其系统
US8793706B2 (en) * 2010-12-16 2014-07-29 Microsoft Corporation Metadata-based eventing supporting operations on data
US9141314B2 (en) 2011-01-20 2015-09-22 Canon Kabushiki Kaisha Systems and methods for updating a user interface for a printing device
US8994985B2 (en) 2011-01-20 2015-03-31 Canon Kabushiki Kaisha Systems and methods for updating printing device capabilities
US9013510B2 (en) * 2011-07-29 2015-04-21 Google Inc. Systems and methods for rendering user interface elements in accordance with a device type
US8954942B2 (en) 2011-09-30 2015-02-10 Oracle International Corporation Optimizations using a BPEL compiler
EP2584445A1 (en) * 2011-10-18 2013-04-24 Research In Motion Limited Method of animating a rearrangement of ui elements on a display screen of an eletronic device
CN102571934A (zh) * 2011-12-22 2012-07-11 深圳华强电子交易网络有限公司 一种web页面数据绑定的方法
US9031922B2 (en) 2012-05-02 2015-05-12 Microsoft Technology Licensing, Llc Code regeneration determination from selected metadata fingerprints
US8775925B2 (en) * 2012-08-28 2014-07-08 Sweetlabs, Inc. Systems and methods for hosted applications
CN103019693A (zh) * 2012-11-21 2013-04-03 用友软件股份有限公司 用户界面的生成系统和生成方法
CN103092625B (zh) * 2013-01-28 2016-01-20 中国航空结算有限责任公司 一种基于.NET Framework平台的处理民航客运客票票证数据的方法和装置
US10296562B2 (en) 2013-02-12 2019-05-21 Oath Inc. Dynamic generation of mobile web experience
CN104007907B (zh) * 2013-02-26 2018-08-10 北京三星通信技术研究有限公司 一种对应用程序进行快捷操作的方法和智能终端
US9258668B2 (en) 2013-07-31 2016-02-09 Sap Se Mobile application framework extensibiilty
US10254931B2 (en) * 2013-09-20 2019-04-09 Sap Se Metadata-driven list user interface component builder
KR102146557B1 (ko) * 2013-11-06 2020-08-21 삼성전자주식회사 어플리케이션의 데이터를 렌더링하는 방법, 장치 및 기록매체
US9772755B2 (en) * 2013-11-15 2017-09-26 Microsoft Technology Licensing, Llc Remote control for displaying application data on dissimilar screens
US9857947B2 (en) * 2014-03-03 2018-01-02 Microsoft Technology Licensing, Llc Metadata driven dialogs
US20150248227A1 (en) * 2014-03-03 2015-09-03 Microsoft Technology Licensing, Llc Configurable reusable controls
US20150347352A1 (en) * 2014-06-02 2015-12-03 Microsoft Technology Licensing, Llc Form preview in a development environment
US9729606B2 (en) 2014-09-10 2017-08-08 Benefitfocus.Com, Inc. Systems and methods for a metadata driven user interface framework
WO2016058153A1 (en) * 2014-10-16 2016-04-21 Yahoo! Inc. Personalizing user interface (ui) elements
US9996230B2 (en) 2014-11-13 2018-06-12 Microsoft Technology Licensing, Llc Using sections for customization of applications across platforms
US10152558B2 (en) * 2014-12-23 2018-12-11 Intel Corporation Graph operations
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
US10503787B2 (en) 2015-09-30 2019-12-10 Oracle International Corporation Sharing common metadata in multi-tenant environment
US11238220B1 (en) 2015-11-13 2022-02-01 Wells Fargo Bank, N.A. Dynamic user interface framework
GB201522914D0 (en) * 2015-12-24 2016-02-10 Atom Bank Plc Update method
CN105824625B (zh) * 2016-03-14 2019-07-23 北京中电普华信息技术有限公司 一种基于云环境的业务应用构造装置及方法
US20170329464A1 (en) * 2016-05-11 2017-11-16 Sap Se Dynamic button with sub-buttons
KR102588633B1 (ko) * 2016-12-14 2023-10-12 현대오토에버 주식회사 화면 미러링 장치 및 방법
EP3631740A4 (en) 2017-05-30 2020-09-23 Visa International Service Association SYSTEM, PROCEDURE AND COMPUTER PROGRAM PRODUCT FOR MAINTAINING TRANSACTION INTEGRITY VIA PUBLIC NETWORKS
US11501201B2 (en) * 2017-07-17 2022-11-15 MetiStream, Inc. Systems, methods, and apparatuses for training, storage, and interaction with machine learning models
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US10795698B2 (en) 2018-07-24 2020-10-06 Microsoft Technology Licensing, Llc User interface based on metadata
CN109582647B (zh) * 2018-11-21 2022-09-30 珠海市新德汇信息技术有限公司 一种面向非结构化证据文件的分析方法及系统
US10725798B2 (en) 2018-12-05 2020-07-28 Visa International Service Association Method, system, and computer program product for dynamic development of an application programming interface
CN110569025B (zh) * 2019-08-26 2020-09-22 珠海格力电器股份有限公司 变量处理方法、装置、可读存储介质及电子设备
US11403079B2 (en) * 2020-01-28 2022-08-02 Salesforce, Inc. Integrated system for designing a user interface
US11397567B2 (en) 2020-01-28 2022-07-26 Salesforce, Inc. Integrated system for designing a user interface
CN111752563A (zh) * 2020-05-18 2020-10-09 深圳市东微智能科技股份有限公司 动态修改界面方法、装置、终端及计算机可读存储介质
US10963272B1 (en) 2020-07-09 2021-03-30 Coupang Corp. Systems and methods for deploying low-application-impact user interfaces
CN113687881A (zh) * 2021-08-20 2021-11-23 广东电网有限责任公司 元数据调用方法、装置、电子设备及存储介质
KR102579484B1 (ko) * 2021-09-07 2023-09-15 네이버 주식회사 위지위그 편집 도구를 제공하는 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257577A (en) 1991-04-01 1993-11-02 Clark Melvin D Apparatus for assist in recycling of refuse
US5606609A (en) 1994-09-19 1997-02-25 Scientific-Atlanta Electronic document verification system and method
US5594660A (en) 1994-09-30 1997-01-14 Cirrus Logic, Inc. Programmable audio-video synchronization method and apparatus for multimedia systems
US5642502A (en) 1994-12-06 1997-06-24 University Of Central Florida Method and system for searching for relevant documents from a text database collection, using statistical ranking, relevancy feedback and small pieces of text
US5933851A (en) 1995-09-29 1999-08-03 Sony Corporation Time-stamp and hash-based file modification monitor with multi-user notification and method thereof
US5974455A (en) * 1995-12-13 1999-10-26 Digital Equipment Corporation System for adding new entry to web page table upon receiving web page including link to another web page not having corresponding entry in web page table
US5745890A (en) * 1996-08-09 1998-04-28 Digital Equipment Corporation Sequential searching of a database index using constraints on word-location pairs
JP4025379B2 (ja) 1996-09-17 2007-12-19 株式会社ニューズウオッチ 検索システム
US6285999B1 (en) * 1997-01-10 2001-09-04 The Board Of Trustees Of The Leland Stanford Junior University Method for node ranking in a linked database
US5960383A (en) * 1997-02-25 1999-09-28 Digital Equipment Corporation Extraction of key sections from texts using automatic indexing techniques
US5848404A (en) 1997-03-24 1998-12-08 International Business Machines Corporation Fast query search in large dimension database
US6256675B1 (en) * 1997-05-06 2001-07-03 At&T Corp. System and method for allocating requests for objects and managing replicas of objects on a network
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6012053A (en) * 1997-06-23 2000-01-04 Lycos, Inc. Computer system with user-controlled relevance ranking of search results
JPH1125119A (ja) 1997-06-30 1999-01-29 Canon Inc ハイパーテキスト閲覧システム
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6351467B1 (en) * 1997-10-27 2002-02-26 Hughes Electronics Corporation System and method for multicasting multimedia content
US6128701A (en) * 1997-10-28 2000-10-03 Cache Flow, Inc. Adaptive and predictive cache refresh policy
US6594682B2 (en) * 1997-10-28 2003-07-15 Microsoft Corporation Client-side system for scheduling delivery of web content and locally managing the web content
US6389436B1 (en) * 1997-12-15 2002-05-14 International Business Machines Corporation Enhanced hypertext categorization using hyperlinks
US6145003A (en) * 1997-12-17 2000-11-07 Microsoft Corporation Method of web crawling utilizing address mapping
US6185558B1 (en) * 1998-03-03 2001-02-06 Amazon.Com, Inc. Identifying the items most relevant to a current query based on items selected in connection with similar queries
US6125361A (en) * 1998-04-10 2000-09-26 International Business Machines Corporation Feature diffusion across hyperlinks
US6151595A (en) 1998-04-17 2000-11-21 Xerox Corporation Methods for interactive visualization of spreading activation using time tubes and disk trees
JPH11328191A (ja) 1998-05-13 1999-11-30 Nec Corp Wwwロボット検索システム
US6098064A (en) * 1998-05-22 2000-08-01 Xerox Corporation Prefetching and caching documents according to probability ranked need S list
US6182085B1 (en) * 1998-05-28 2001-01-30 International Business Machines Corporation Collaborative team crawling:Large scale information gathering over the internet
ATE263988T1 (de) * 1998-06-08 2004-04-15 Kcsl Inc Methode und verfahren um relevante dokumente in einer datenbank zu finden
US6638314B1 (en) * 1998-06-26 2003-10-28 Microsoft Corporation Method of web crawling utilizing crawl numbers
US6549897B1 (en) * 1998-10-09 2003-04-15 Microsoft Corporation Method and system for calculating phrase-document importance
US6385602B1 (en) * 1998-11-03 2002-05-07 E-Centives, Inc. Presentation of search results using dynamic categorization
US6360215B1 (en) * 1998-11-03 2002-03-19 Inktomi Corporation Method and apparatus for retrieving documents based on information other than document content
US6922699B2 (en) * 1999-01-26 2005-07-26 Xerox Corporation System and method for quantitatively representing data objects in vector space
US6418433B1 (en) * 1999-01-28 2002-07-09 International Business Machines Corporation System and method for focussed web crawling
US6304864B1 (en) * 1999-04-20 2001-10-16 Textwise Llc System for retrieving multimedia information from the internet using multiple evolving intelligent agents
US6327590B1 (en) 1999-05-05 2001-12-04 Xerox Corporation System and method for collaborative ranking of search results employing user and group profiles derived from document collection content analysis
US6973490B1 (en) * 1999-06-23 2005-12-06 Savvis Communications Corp. Method and system for object-level web performance and analysis
US6547829B1 (en) * 1999-06-30 2003-04-15 Microsoft Corporation Method and system for detecting duplicate documents in web crawls
US7181438B1 (en) * 1999-07-21 2007-02-20 Alberti Anemometer, Llc Database access system
US6442606B1 (en) * 1999-08-12 2002-08-27 Inktomi Corporation Method and apparatus for identifying spoof documents
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
US6351755B1 (en) * 1999-11-02 2002-02-26 Alta Vista Company System and method for associating an extensible set of data with documents downloaded by a web crawler
US6418452B1 (en) * 1999-11-03 2002-07-09 International Business Machines Corporation Network repository service directory for efficient web crawling
US6418453B1 (en) * 1999-11-03 2002-07-09 International Business Machines Corporation Network repository service for efficient web crawling
US6539376B1 (en) * 1999-11-15 2003-03-25 International Business Machines Corporation System and method for the automatic mining of new relationships
US7016540B1 (en) * 1999-11-24 2006-03-21 Nec Corporation Method and system for segmentation, classification, and summarization of video images
US6883135B1 (en) * 2000-01-28 2005-04-19 Microsoft Corporation Proxy server using a statistical model
US7240067B2 (en) * 2000-02-08 2007-07-03 Sybase, Inc. System and methodology for extraction and aggregation of data from dynamic content
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US20010030667A1 (en) * 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6772160B2 (en) * 2000-06-08 2004-08-03 Ingenuity Systems, Inc. Techniques for facilitating information acquisition and storage
US6741986B2 (en) * 2000-12-08 2004-05-25 Ingenuity Systems, Inc. Method and system for performing information extraction and quality control for a knowledgebase
US7080073B1 (en) * 2000-08-18 2006-07-18 Firstrain, Inc. Method and apparatus for focused crawling
US20030217052A1 (en) * 2000-08-24 2003-11-20 Celebros Ltd. Search engine method and apparatus
US6961900B1 (en) * 2000-08-28 2005-11-01 Microsoft Corporation Rendering data according to a present schema from an origin response message
US6598051B1 (en) * 2000-09-19 2003-07-22 Altavista Company Web page connectivity server
US6560600B1 (en) * 2000-10-25 2003-05-06 Alta Vista Company Method and apparatus for ranking Web page search results
US6622140B1 (en) * 2000-11-15 2003-09-16 Justsystem Corporation Method and apparatus for analyzing affect and emotion in text
US7925967B2 (en) * 2000-11-21 2011-04-12 Aol Inc. Metadata quality improvement
US6826581B2 (en) * 2000-12-06 2004-11-30 Intel Corporation Upgrading a device over a network by downloading results of command execution from script file
US20020078045A1 (en) * 2000-12-14 2002-06-20 Rabindranath Dutta System, method, and program for ranking search results using user category weighting
US7356530B2 (en) * 2001-01-10 2008-04-08 Looksmart, Ltd. Systems and methods of retrieving relevant information
US20020103798A1 (en) * 2001-02-01 2002-08-01 Abrol Mani S. Adaptive document ranking method based on user behavior
US20020107886A1 (en) * 2001-02-07 2002-08-08 Gentner Donald R. Method and apparatus for automatic document electronic versioning system
US7203678B1 (en) * 2001-03-27 2007-04-10 Bea Systems, Inc. Reconfigurable query generation system for web browsers
US7188106B2 (en) * 2001-05-01 2007-03-06 International Business Machines Corporation System and method for aggregating ranking results from various sources to improve the results of web searching
US6738764B2 (en) * 2001-05-08 2004-05-18 Verity, Inc. Apparatus and method for adaptively ranking search results
US20040230572A1 (en) * 2001-06-22 2004-11-18 Nosa Omoigui System and method for semantic knowledge retrieval, management, capture, sharing, discovery, delivery and presentation
US7076483B2 (en) * 2001-08-27 2006-07-11 Xyleme Sa Ranking nodes in a graph
US6766422B2 (en) * 2001-09-27 2004-07-20 Siemens Information And Communication Networks, Inc. Method and system for web caching based on predictive usage
US7062502B1 (en) * 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US7693830B2 (en) * 2005-08-10 2010-04-06 Google Inc. Programmable search engine
US20030221165A1 (en) * 2002-05-22 2003-11-27 Microsoft Corporation System and method for metadata-driven user interface
WO2003107321A1 (en) * 2002-06-12 2003-12-24 Jena Jordahl Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view
US20040056894A1 (en) * 2002-09-19 2004-03-25 Igor Zaika System and method for describing and instantiating extensible user interfaces
US6886010B2 (en) * 2002-09-30 2005-04-26 The United States Of America As Represented By The Secretary Of The Navy Method for data and text mining and literature-based discovery
US7853884B2 (en) * 2003-02-28 2010-12-14 Oracle International Corporation Control-based graphical user interface framework
US20040181515A1 (en) * 2003-03-13 2004-09-16 International Business Machines Corporation Group administration of universal resource identifiers with members identified in search result
US7028029B2 (en) * 2003-03-28 2006-04-11 Google Inc. Adaptive computation of ranking
US7451130B2 (en) * 2003-06-16 2008-11-11 Google Inc. System and method for providing preferred country biasing of search results
US7293253B1 (en) * 2003-09-12 2007-11-06 Nortel Networks Limited Transparent interface migration using a computer-readable mapping between a first interface and a second interface to auto-generate an interface wrapper
US7346839B2 (en) * 2003-09-30 2008-03-18 Google Inc. Information retrieval based on historical data
US7693827B2 (en) * 2003-09-30 2010-04-06 Google Inc. Personalization of placed content ordering in search results
US20050071328A1 (en) * 2003-09-30 2005-03-31 Lawrence Stephen R. Personalization of web search
US7552109B2 (en) * 2003-10-15 2009-06-23 International Business Machines Corporation System, method, and service for collaborative focused crawling of documents on a network
US20050086192A1 (en) * 2003-10-16 2005-04-21 Hitach, Ltd. Method and apparatus for improving the integration between a search engine and one or more file servers
US20060047649A1 (en) * 2003-12-29 2006-03-02 Ping Liang Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation
CN100495392C (zh) * 2003-12-29 2009-06-03 西安迪戈科技有限责任公司 一种智能搜索方法
US7483891B2 (en) * 2004-01-09 2009-01-27 Yahoo, Inc. Content presentation and management system associating base content and relevant additional content
US7499913B2 (en) * 2004-01-26 2009-03-03 International Business Machines Corporation Method for handling anchor text
US7310632B2 (en) * 2004-02-12 2007-12-18 Microsoft Corporation Decision-theoretic web-crawling and predicting web-page change
US7281002B2 (en) * 2004-03-01 2007-10-09 International Business Machine Corporation Organizing related search results
US7257577B2 (en) * 2004-05-07 2007-08-14 International Business Machines Corporation System, method and service for ranking search results using a modular scoring system
US7363296B1 (en) * 2004-07-01 2008-04-22 Microsoft Corporation Generating a subindex with relevant attributes to improve querying
US7472375B2 (en) * 2005-03-29 2008-12-30 Intel Corporation Creating managed code from native code
US7774713B2 (en) * 2005-06-28 2010-08-10 Microsoft Corporation Dynamic user experience with semantic rich objects
US7945531B2 (en) * 2005-09-16 2011-05-17 Microsoft Corporation Interfaces for a productivity suite application and a hosted user interface

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631497B1 (en) * 1999-07-19 2003-10-07 International Business Machines Corporation Binding data from data source to cells in a spreadsheet

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549570A (zh) * 2018-04-28 2018-09-18 北京小米移动软件有限公司 用户界面的更新方法及装置
CN108549570B (zh) * 2018-04-28 2021-10-26 北京小米移动软件有限公司 用户界面的更新方法及装置

Also Published As

Publication number Publication date
WO2007067578A1 (en) 2007-06-14
CN101322096A (zh) 2008-12-10
US8095565B2 (en) 2012-01-10
US20070130205A1 (en) 2007-06-07
KR20080071133A (ko) 2008-08-01
KR101331260B1 (ko) 2013-11-19

Similar Documents

Publication Publication Date Title
CN101322096B (zh) 元数据驱动的用户界面
US10929116B2 (en) Generation of dynamic software models using input mapping with feature definitions
US12079603B2 (en) Universal application framework for streamlined frontend development of user interface
US9344833B2 (en) Data component in a mobile application framework
US7716665B2 (en) System and method for developing portal applications and for automatically deploying portal applications into a portal server application
US7493594B2 (en) System and method for designing component based applications
US8086995B2 (en) System and method for flexible visual representation of device fonts
US20150293764A1 (en) Method and system to compose and execute business rules
US8627344B2 (en) Methods and apparatuses for user interface management
US11349902B2 (en) System and method to standardize and improve implementation efficiency of user interface content
WO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
CA2538561C (en) System and method for conversion of web services applications into component based applications for devices
CA2539047C (en) System and method for generating component based applications
Jendrock et al. The Java EE 6 tutorial: advanced topics
Honkala Web user interaction: a declarative approach based on XForms
CN113741891A (zh) 一种页面处理方法、装置、电子设备及存储介质
Kelly et al. A simplified approach to web service development
Japikse et al. Complete the web application with ASP. NET Core
US12126670B2 (en) System and method to standardize and improve implementation efficiency of user interface content
EP1638022A2 (en) System and method for developing portal applications and automatically deploying them into a portal server application
Pekowsky JavaServer Pages
CN116610385A (zh) 应用生成方法、装置、计算机设备、存储介质和程序产品
CN116991403A (zh) 低代码平台组件交互方法、服务器及计算机可读存储介质
Korepanov Development of web interface for working with tabular data
Kanjilal et al. Sams teach yourself ASP. NET Ajax in 24 hours

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

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

Effective date of registration: 20150428

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121010