CN101322096B - 元数据驱动的用户界面 - Google Patents
元数据驱动的用户界面 Download PDFInfo
- 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
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 88
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000012856 packing Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000000644 propagated effect Effects 0.000 claims description 3
- 238000009877 rendering Methods 0.000 abstract 3
- 230000015654 memory Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 11
- JLYFCTQDENRSOL-VIFPVBQESA-N dimethenamid-P Chemical compound COC[C@H](C)N(C(=O)CCl)C=1C(C)=CSC=1C JLYFCTQDENRSOL-VIFPVBQESA-N 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008676 import Effects 0.000 description 5
- 230000011664 signaling Effects 0.000 description 5
- 239000011800 void material Substances 0.000 description 5
- 101000857680 Xenopus laevis Runt-related transcription factor 1 Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000011230 binding agent Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005587 bubbling Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-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所述的方法,其特征在于,所述元数据是根据包括以下机制的元数据模式来创建的:在所述用户界面内创建各控件;在程序上修改各控件,并支持针对各控件的事件处理。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549570A (zh) * | 2018-04-28 | 2018-09-18 | 北京小米移动软件有限公司 | 用户界面的更新方法及装置 |
Families Citing this family (86)
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)
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)
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 |
-
2006
- 2006-05-05 US US11/418,829 patent/US8095565B2/en not_active Expired - Fee Related
- 2006-12-05 CN CN2006800455212A patent/CN101322096B/zh not_active Expired - Fee Related
- 2006-12-05 KR KR1020087010883A patent/KR101331260B1/ko active IP Right Grant
- 2006-12-05 WO PCT/US2006/046464 patent/WO2007067578A1/en active Application Filing
Patent Citations (1)
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)
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 |