KR20060059335A - System and method for controlling user interface properties with data - Google Patents

System and method for controlling user interface properties with data Download PDF

Info

Publication number
KR20060059335A
KR20060059335A KR1020047010780A KR20047010780A KR20060059335A KR 20060059335 A KR20060059335 A KR 20060059335A KR 1020047010780 A KR1020047010780 A KR 1020047010780A KR 20047010780 A KR20047010780 A KR 20047010780A KR 20060059335 A KR20060059335 A KR 20060059335A
Authority
KR
South Korea
Prior art keywords
binding
data value
user interface
attribute
source data
Prior art date
Application number
KR1020047010780A
Other languages
Korean (ko)
Inventor
사무엘 더블유. 벤트
나미타 굽타
데이비드 제이. 제니
알렉산더 아이. 호프만
Original Assignee
마이크로소프트 코포레이션
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 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Priority to KR1020047010780A priority Critical patent/KR20060059335A/en
Publication of KR20060059335A publication Critical patent/KR20060059335A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Abstract

Described is a system and method for controlling user interface (UI) properties with data. A computing device (100) having an application (202) is separated into independent parts, a logic portion and a UI portion. The logic portion manipulates data values within the application. The UI portion is responsible for displaying UI properties. A binding specification describes a relationship between the UO property and data value. The binding specification is used by system level code to determine the manner in which it is notified when the data value undergoes a change and the manner in which it directs the UO portion to reflect the change in the UI property. The binding specification identifies a source data item, a path to the data value in the source data item, a target UI element, and the UO property on the target UI element. The binding may be specified using code or markup language.

Description

데이터에 따라 사용자 인터페이스 속성들을 제어하는 시스템 및 방법{SYSTEM AND METHOD FOR CONTROLLING USER INTERFACE PROPERTIES WITH DATA}SYSTEM AND METHOD FOR CONTROLLING USER INTERFACE PROPERTIES WITH DATA}

본 출원은 마이크로소프트 코오퍼레이션이 2003년 5월 17일자로 미국에서 국제 출원을 하고 미국을 제외한 모든 국가를 지정하여 출원된 PCT 출원이다.This application is a PCT application filed by Microsoft Corporation on May 17, 2003, filed internationally in the United States, and designated for all countries except the United States.

사용자에게 정보를 제공하는 방식은 그 정보를 이해하고 파악하는 사용자의 능력에 영향을 미친다. 컴퓨터 디스플레이(display)에서, 색, 폰트 스타일(font style) 등을 이용하여 정보를 강조하는 것을 추가하는 것은 일반적인 일이 되었다. 이러한 강조는 사용자가 정보의 중요성을 보다 용이하기 파악할 수 있게 한다. 정보의 표현을 처리하는 코드(code)(사용자 인터페이스) 및 그 정보에 대해 애플리케이션 로직(logic)을 수행하는 코드는 통상적으로 긴밀하게 연결된다. 예를 들면, 로직은 사용자 인터페이스 속성(색, 폰트, 위치, 사이즈)에 데이터를 직접적으로 할당한다. 그러므로, 사용자 인터페이스에 변경이 있을 때, 로직 또한 변경해야 한다. 예를 들면, 텍스트 박스의 경우, 사용자 인터페이스 코드는 변경시에 텍스트가 변경되었는지 여부를 결정하도록 듣고, 사용자 인터페이스 코드는 변경된 텍스트를 확인한 다음 변경된 텍스트를 디스플레이(display)한다. 이와 같이 밀접하게 연결되는 사용자 인터페이스와 로직으로 인해, 본질적으로 상당히 약한 코드를 산출하게 된다. 이러한 약한 코드를 유지하는 데는 상당한 비용과 시간이 든다.The manner in which the information is presented to the user affects the user's ability to understand and understand the information. In computer displays, it has become common to add emphasis to information using colors, font styles, and the like. This emphasis makes it easier for users to grasp the importance of information. Code (user interface) that handles the representation of information and code that performs application logic on that information are typically tightly coupled. For example, logic directly assigns data to user interface attributes (color, font, position, size). Therefore, when there is a change in the user interface, the logic must also change. For example, in the case of a text box, the user interface code listens to determine whether the text has changed at the time of change, and the user interface code checks the changed text and then displays the changed text. This tightly coupled user interface and logic results in inherently weak code. Maintaining this weak code is costly and time consuming.

본 발명은 사용자 인터페이스를 데이터에 따라 제어하기 위한 시스템 및 방법에 관한 것이다. 본 발명은 사용자 인터페이스와 애플리케이션 로직과 함께, 데이터를 그 데이터를 사용자 인터페이스에 관련시키는 메카니즘(mechanism)을 제공함으로써 분리시킨다. 본 발명은 사용자 인터페이스 설계자 및 애플리케이션 로직을 작성하는 애플리케이션 작성자가 독립적으로 작업할 수 있게 한다. 설계자와 작성자 어느 누구도 서로의 코드를 이해할 필요가 없고 서로의 코드 개발에 영향을 주지도 않을 것이다. 본 발명은 또한 사용자 인터페이스의 변경이 매우 쉽게 이루어지도록 한다. 예를 들면, 새롭고 보다 더 사용자를 끄는 사용자 인터페이스 플랫폼(platform)이 이용가능해 지거나 사용자 인터페이스 설계자가 애플리케이션의 외관이 변경되길 원할 때, 설계자는 그 애플리케이션 로직을 변경할 필요가 없다. 게다가, 사용자 인터페이스에 데이터를 관련시키는 메카니즘은 동적이다. 이는 데이터에서의 임의의 변경이 자동적으로 표현에 반영되도록 한다. 게다가, 사용자 인터페이스를 통한 사용자로부터의 임의의 입력은 자동적으로 데이터를 갱신할 수 있다. 본 발명이 사용자 인터페이스의 데이터 디스플레이 양상(예를 들면, 텍스트) 뿐만 아니라, 시각적인 양상(예를 들면, 배경, 폰트 사이즈, 등)까지의 연관성을 허용하므로, 데이터를 설명적이고, 시각적으로 향상되고 유연성있게 표현할 수 있다. 예를 들면, 음수는 붉은 색으로 표시될 수 있거나 주가가 상승했을 때 화살표가 위쪽을 가리키도록 나타낼 수 있다.The present invention relates to a system and method for controlling a user interface in accordance with data. The present invention, along with user interface and application logic, separates data by providing a mechanism for associating that data with the user interface. The present invention allows user interface designers and application writers who write application logic to work independently. Neither the designer nor the author need to understand each other's code, nor will they affect each other's code development. The invention also makes it very easy to change the user interface. For example, when a new and more user-friendly user interface platform becomes available or the user interface designer wants to change the appearance of the application, the designer does not need to change the application logic. In addition, the mechanism for associating data with the user interface is dynamic. This allows any change in the data to be automatically reflected in the representation. In addition, any input from the user through the user interface can automatically update the data. The present invention allows associations not only to the data display aspect of the user interface (eg text), but also to the visual aspect (eg background, font size, etc.), thereby improving data explanatory and visually. I can express it flexibly. For example, negative numbers may be displayed in red or may indicate that an arrow points upward when the stock price rises.

그러므로, 본 발명에 따르면, 애플리케이션은 로직 영역 및 UI 영역의, 독립 된 부분으로 나뉘어질 수 있다. 로직 영역은 애플리케이션 내의 데이터 값들을 조작한다. UI 영역은 데이터의 표현을 담당한다. 바인딩 명세(binding specification)에는 UI 속성과 데이터 값 간의 관계가 기술되어 있다. 이 바인딩 명세는 시스템 레벨 코드에 의해 데이터 값이 변화를 겪을 때 통지되는 방식 및 UI 속성에 그 변경을 반영하도록 UI 영역에 지시하는 방식을 결정하도록 사용된다. 바인딩 명세는 소스 데이터 아이템, 소스 데이터 아이템의 데이터 값의 경로, 대상 UI 엘리먼트, 및 대상 UI 엘리먼트의 UI 속성을 식별한다. 이 바인딩은 코드 또는 마크업 언어를 이용하여 지정될 수 있다. Therefore, according to the present invention, the application can be divided into independent parts of the logic area and the UI area. Logic regions manipulate data values within the application. The UI area is responsible for the representation of the data. The binding specification describes the relationship between UI properties and data values. This binding specification is used to determine how the system level code is to be notified when a data value undergoes a change and how to instruct the UI area to reflect that change in UI attributes. The binding specification identifies the source data item, the path of the data value of the source data item, the target UI element, and the UI attribute of the target UI element. This binding can be specified using code or markup language.

도 1은 본 발명의 예시적인 구현에서 사용될 수 있는 예시적인 컴퓨팅 장치를 도시함.1 illustrates an example computing device that may be used in an exemplary implementation of the invention.

도 2는 본 발명에 따라 데이터를 가지는 사용자 인터페이스 속성을 제어하는 일 실시예를 도시하는 기능적인 블럭도.2 is a functional block diagram illustrating one embodiment of controlling user interface attributes with data in accordance with the present invention.

도 3은 본 발명의 일 실시예에 따라 데이터 값을 가지는 사용자 인터페이스 속성에 바인딩하는 프로세스를 도시하는 논리적인 흐름도.3 is a logical flow diagram illustrating a process of binding to a user interface attribute having a data value in accordance with one embodiment of the present invention.

도 4는 본 발명의 실시예에 따라 사용자 인터페이스 속성을 데이터와 관련시키기 위한 몇몇의 예시적인 구문.4 is some exemplary syntax for associating user interface attributes with data in accordance with an embodiment of the invention.

본 발명은 사용자 인터페이스를 데이터에 따라 제어하는 시스템 및 방법을 제시한다. 본 발명은 데이터를 사용자 인터페이스와 관련시키는 메커니즘을 제공 함으로써 사용자 인터페이스와 애플리케이션 로직을 분리시킨다. 이하에 자세히 기술될 바와 같이, 사용자 인터페이스와 데이터의 이러한 분리는, 그것의 관련 로직에 따라서, 개발자의 다른 그룹들이 사용자 인터페이스 및 로직에서 모두 다른 그룹의 코드 개발에 영향을 미치지 않고 독립적으로 작업할 수 있게 한다. 게다가, 이하 상세한 설명에서는, 본 발명은 데이터 소스로부터 사용자 인터페이스 등에게 값들을 자동적으로 전송하는 시스템 및 방법을 제공한다. 이하의 논의를 통하여, "데이터 바인딩"이라는 용어는 데이터 값들을 UI 속성에 관련시키고, 데이터 값들을 전송하고 갱신하는 등의 과정을 칭한다.The present invention provides a system and method for controlling a user interface in accordance with data. The present invention separates user interface and application logic by providing a mechanism for associating data with a user interface. As will be described in detail below, this separation of user interface and data, depending on its associated logic, allows different groups of developers to work independently without affecting the development of other groups of code both in the user interface and logic. To be. In addition, in the following detailed description, the present invention provides a system and method for automatically transferring values from a data source to a user interface or the like. Throughout the discussion below, the term "data binding" refers to a process of associating data values with a UI attribute, sending and updating data values, and the like.

예시적인 컴퓨팅 환경Example Computing Environment

도 1은 본 발명의 예시적인 구현에서 사용될 수 있는 예시적인 컴퓨팅 장치를 도시한다. 도 1의 참조하면, 매우 기본적인 구성으로서, 컴퓨팅 장치(100)는 통상적으로 적어도 하나의 프로세싱 유닛(102) 및 시스템 메모리(104)를 포함한다. 컴퓨팅 장치(100)의 정확한 구성 및 유형에 따라, 시스템 메모리(104)는 (RAM과 같은) 휘발성, (ROM, 플래쉬 메모리 등과 같은) 비휘발성 또는 이 둘의 임의 조합일 수 있다. 시스템 메모리(104)는 통상적으로 오퍼레이팅 시스템(105), 하나 이상의 프로그램 모듈(106)을 포함하고, 프로그램 데이터(107)를 포함할 수 있다. 프로그램 모듈(106)의 예는 브라우저 애플리케이션, 재정 관리 애플리케이션, 워드 프로세서 등을 포함한다. 이러한 기본적인 구성은 도 1에서 점선(108) 안의 이들 컴포넌트로 도시된다.1 illustrates an example computing device that may be used in an example implementation of the invention. Referring to FIG. 1, in a very basic configuration, computing device 100 typically includes at least one processing unit 102 and system memory 104. Depending on the exact configuration and type of computing device 100, system memory 104 may be volatile (such as RAM), nonvolatile (such as ROM, flash memory, etc.) or any combination of both. System memory 104 typically includes an operating system 105, one or more program modules 106, and may include program data 107. Examples of program module 106 include browser applications, financial management applications, word processors, and the like. This basic configuration is shown by these components within dashed line 108 in FIG. 1.

컴퓨팅 장치(100)는 추가적인 특징 또는 기능을 가질 수 있다. 예를 들면, 컴퓨팅 장치(100)는, 예를 들면, 자기 디스크, 광 디스크, 또는 테입과 같은 추가적인 데이터 저장 장치(분리형 및/또는 비분리형) 또한 포함할 수 있다. 이러한 추가적인 저장 장치는 도 1에서 분리형 저장 장치(109) 및 비분리형 저장 장치(110)로 도시된다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은, 정보의 저장을 위한 임의의 방법 및 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함할 수 있다. 시스템 메모리(104), 분리형 저장 장치(109) 및 비분리형 저장 장치(110)는 컴퓨터 저장 매체의 모든 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 다른 메모리 기술, CD-ROM, DVD, 다른 광 저장 장치, 자기 카세트, 자기 테입, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 컴퓨팅 장치(100)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다. 임의의 이러한 컴퓨터 저장 매체는 컴퓨팅 장치(100)의 일부일 수 있다. 컴퓨팅 장치(100)는 키보드, 마우스, 팬, 음성 입력 장치, 접촉 입력 장치 등과 같은 입력 장치(들)(112) 또한 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 장치(들)(114) 또한 포함될 수 있다. 이들 장치들은 본 기술 분야에서 잘 알려져 있으므로 본 명세서에서 장황하게 기술될 필요가 없다.Computing device 100 may have additional features or functionality. For example, computing device 100 may also include additional data storage devices (removable and / or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage devices are shown in FIG. 1 as removable storage 109 and non-removable storage 110. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method and technology for storage of information, such as computer readable instructions, data structures, program modules or other data. System memory 104, removable storage 109 and non-removable storage 110 are all examples of computer storage media. Computer storage media may include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD, other optical storage devices, magnetic cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, or computing device 100. Including, but not limited to, any other medium that can be accessed by and used to store desired information. Any such computer storage media may be part of computing device 100. Computing device 100 may also have input device (s) 112, such as a keyboard, mouse, fan, voice input device, touch input device, and the like. Output device (s) 114 such as displays, speakers, printers, etc. may also be included. These devices are well known in the art and need not be described in detail herein.

컴퓨팅 장치(100)는 네트워크 상에서와 같이, 장치(100)가 다른 컴퓨팅 장치(118)와 통신하도록 하는 통신 접속(116) 또한 포함할 수 있다. 통신 접속(116)은 통신 매체의 일례이다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에서 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터에 의해 구현될 수 있으며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 본 명세서에서 사용되는 컴퓨터 판독가능 매체라는 용어는 저장 장치 및 통신 매체를 포함한다. Computing device 100 may also include a communication connection 116 that allows device 100 to communicate with other computing devices 118, such as on a network. Communication connection 116 is one example of communication media. Communication media can typically be implemented by computer readable instructions, data structures, program modules, or other data in modulated data signals, such as carrier waves or other transmission mechanisms, and includes any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, communication media includes, but is not limited to, wired media such as a wired network or direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. The term computer readable media as used herein includes storage devices and communication media.

예시적인 구현Example implementation

도 2는 본 발명에 따라 데이터를 가지는 사용자 인터페이스 속성들을 제어하는 시스템(200)의 일 실시예를 도시하는 기능적인 블럭도이다. 시스템(200)은 애플리케이션(202), 플랫폼(220) 및 데이터 소스(230)를 포함한다. 애플리케이션(202)은 도 1에 도시된 컴퓨팅 장치(100) 상의 애플리케이션(106) 중의 하나일 수 있다. 애플리케이션(202)은 데이터 값(예를 들면, 소스 데이터 값(238))을 조작하는 (본 명세서에서 이하 로직(204)이라고 칭할) 코드를 포함한다. 일반적으로, 로직(204)은 데이터 값들의 검증을 수행하고 데이터 값들을 갱신한다. 데이터 값(예를 들면, 데이터 값(238))은 데이터 아이템(예를 들면, 데이터 아이템(232))의 속성(즉, 데이터 소스 속성)의 내용을 나타낸다. 데이터 아이템(232)은 데이터 소스(예를 들면, 데이터 소스(230)) 내에 위치된다. 각 데이터 소스(230)는 몇몇의 데이터 아이템들을 포함할 수 있고, 각 데이터 아이템은 소스 데이터 값이 저장되는 하나 이상의 속성을 가진다. 로직(203)은 복수의 데이터 소스로부터의 데이터 값 들을 조작할 수 있다. 데이터 소스들은 XML 문서, 객체, 데이터셋 등을 포함할 수 있다. 이하에 더 상세히 기술될 바와 같이, 데이터 아이템의 속성 각각은 사용자 인터페이스(UI)를 제어하는 데에 이용된다.2 is a functional block diagram illustrating one embodiment of a system 200 for controlling user interface attributes having data in accordance with the present invention. System 200 includes an application 202, a platform 220, and a data source 230. The application 202 may be one of the applications 106 on the computing device 100 shown in FIG. 1. Application 202 includes code (also referred to herein as logic 204) to manipulate data values (eg, source data values 238). In general, logic 204 performs verification of data values and updates data values. The data value (eg, data value 238) represents the content of an attribute (ie, data source attribute) of the data item (eg, data item 232). Data item 232 is located within a data source (eg, data source 230). Each data source 230 may include several data items, each data item having one or more attributes in which the source data value is stored. Logic 203 may manipulate data values from a plurality of data sources. Data sources can include XML documents, objects, datasets, and the like. As will be described in more detail below, each attribute of a data item is used to control a user interface (UI).

애플리케이션(202)은 또한 정보를 표현하는 (본 명세서에서 이하 사용자 인터페이스(206)라 칭할) 코드를 포함한다. 사용자 인터페이스(206)는 몇몇의 사용자 인터페이스 엘리먼트(예를 들면, 사용자 인터페이스 엘리먼트(208))을 포함한다. 각각의 사용자 인터페이스 엘리먼트(208)는 디스플레이된 텍스트, 색, 폰트, 위치, 사이즈 등과 같은, 하나 이상의 속성(예를 들면, UI 속성(210 및 212))을 포함한다. 그 다음, 상세히 후술될 바와 같이, 본 발명에 따라 이들 UI 속성(210 및 212)은 하나 이상의 데이터 값(238 및 242)과 관련된다. 일반적으로, 이 연관성은 플랫폼(220) 내의 바인딩 엔진(224)을 통해 일어난다. 플랫폼(220)은 오퍼레이팅 시스템, 가상 엔진 등과 같이, 서비스의 시스템 계층을 나타낸다. 플랫폼(220)은 데이터 값(234 및 242)에 부속하는 계층적인 정보의 유지 및 데이터 값과 관련되는 속성들의 갱신을 담당하는 속성 엔진(222)을 포함한다. 바인딩 엔진(224) 및 속성 엔진(222)은 개별적인 컴포넌트들로 도시되지만, 본 기술 분야에서 숙련된 기술을 가진 자라면 각각에 의하여 제공되는 기능이 본 발명에서 벗어나지 않으면서 한 컴포넌트 내에 포함될 수 있다는 것을 인식할 것이다.The application 202 also includes code (referred to herein as the user interface 206) to represent the information. User interface 206 includes several user interface elements (eg, user interface element 208). Each user interface element 208 includes one or more attributes (eg, UI attributes 210 and 212), such as displayed text, color, font, position, size, and the like. Then, as will be described in detail below, these UI attributes 210 and 212 are associated with one or more data values 238 and 242 in accordance with the present invention. In general, this association takes place through the binding engine 224 in the platform 220. Platform 220 represents a system layer of services, such as an operating system, a virtual engine, or the like. Platform 220 includes an attribute engine 222 that is responsible for maintaining hierarchical information appended to data values 234 and 242 and updating attributes associated with the data values. Although binding engine 224 and attribute engine 222 are shown as separate components, those skilled in the art will appreciate that the functionality provided by each may be included in one component without departing from the present invention. Will recognize.

데이터 값(238 및 242)과 그들의 UI 속성(210 및 212)의 연관성(즉, 바인딩)은 데이터 값으로부터 UI 속성으로의 점선으로 도 2에 도시된다(본 명세서에서는 이하 바인딩(226 및 228)이라고 칭함). 이하의 논의에서, "데이터 값"이라는 용어 는 "소스 데이터 값"이라는 용어와 호환되게 사용될 수 있다. 유사하게, UI 속성이라는 용어는 "대상 속성"이라는 용어와 호환되게 사용될 수 있다. 이들 바인딩(226 및 228)은 동적 속성들(즉, 대상 속성들)이 임의의 객체의 속성들로부터와 같이, 데이터 값(즉, 소스 데이터 값)으로부터 자동적으로 설정될 수 있게 한다. 이들 바인딩은 소스 데이터 값의 변경들이 반영되도록 바인딩된 대상 속성을 자동적으로 갱신시키는 동적일 수 있다. The association (ie, binding) of the data values 238 and 242 with their UI attributes 210 and 212 is shown in FIG. 2 by dotted lines from the data values to the UI attributes (hereafter referred to as bindings 226 and 228). Called). In the discussion that follows, the term "data value" may be used interchangeably with the term "source data value". Similarly, the term UI attribute may be used interchangeably with the term "target attribute". These bindings 226 and 228 allow dynamic properties (ie, target properties) to be set automatically from a data value (ie, source data value), such as from any object's properties. These bindings can be dynamic to automatically update the bound target attribute to reflect changes in the source data value.

이러한 자동적인 갱신 기능을 제공하기 위하여, 본 발명은 통지 메카니즘(예를 들면, 통지자(236 및 240) 및 통지자들로부터 플랫폼(220)으로의 화살표들에 의해 도 2에 도시됨)을 더 제공한다. 각각의 데이터 아이템(232 및 234)은 각각, 대응하는 통지자(236 및 240)를 가진다. 통지 메카니즘은 시스템에게 소스 데이터 값이 변경되었고 데이터 값이 대상 속성(즉, UI 속성)으로 전달될 수 있음을 알리는 것을 담당한다.In order to provide this automatic update function, the present invention further provides a notification mechanism (eg, shown in FIG. 2 by arrows from notifiers 236 and 240 and notifiers to platform 220). to provide. Each data item 232 and 234 has a corresponding notifier 236 and 240, respectively. The notification mechanism is responsible for informing the system that the source data value has changed and that the data value can be passed to the target attribute (ie, UI attribute).

마크업, 코드, 등을 통하여서와 같이, 바인딩(226 및 228)이 생성되면, 바인딩 엔진(224)은 그 바인딩과 관련되는 바인딩 객체(예를 들면, 바인딩 객체(250 및 252))를 생성한다. 예를 들면, 바인딩 객체(252)는 바인딩 엔진(224) 내의 바인딩(228)을 나타낼 수 있다. 각각의 바인딩 객체는 몇몇의 속성(예를 들면, 바인딩 속성(260-272))을 포함한다. 이들 바인딩 속성(260-272) 각각은 프로그램으로 설정될 수 있다. 이하의 논의는 각각의 이들 속성을 기술하고 도 4는 이들 속성들의 몇몇을 지정하는 바인딩을 활성화하는 예시적인 코드를 도시한다.When bindings 226 and 228 are created, such as through markup, code, and the like, binding engine 224 creates a binding object (eg, binding objects 250 and 252) associated with the binding. . For example, the binding object 252 can represent the binding 228 in the binding engine 224. Each binding object includes several attributes (eg, binding attributes 260-272). Each of these binding attributes 260-272 can be set programmatically. The discussion below describes each of these attributes and FIG. 4 shows example code for activating a binding specifying some of these attributes.

(본 명세서에서 이하 경로(260)라 칭할) 바인딩 속성 중 하나는 (소스 객체 를 통하여) 소스 데이터 값들을 위치시키는 방식을 식별한다. 경로(260)는 속성, 소스 객체에서의 부속성 또는 색인자, ADO(ActiveX Data Object)의 열, XML의 XPath 등을 참조할 수 있다. 또는 경로는 리플렉션(reflection) 또는 ADO 경로를 참조할 수 있다.One of the binding attributes (hereafter referred to as path 260 herein) identifies how to place source data values (via the source object). The path 260 can refer to attributes, appendages or indexers in the source object, columns of ActiveX Data Objects (ADOs), XPaths in XML, and the like. Alternatively, the path may refer to a reflection or ADO path.

(본 명세서에서 이하 바인드타입(262)이라 칭할) 바인딩 속성 중 다른 하나는 바인딩(226 및 228)의 타입을 정의한다. 일 실시예에서, 바인드 타입은 oneWay, twoWay, 및 oneTime을 포함한다. 도시된 바와 같이, 바인딩(226)은 twoWay 바인딩을 나타내고 바인딩(228)은 twoWay 바인딩을 나타낸다. 이들 바인딩 타입 중 하나가 디폴트(default)로 설정된다. 일실시예에서, twoWay 바인딩이 디폴트 바인딩 타입으로 설정된다.The other of the binding attributes (hereinafter referred to as bind type 262 herein) defines the types of bindings 226 and 228. In one embodiment, the bind type includes oneWay, twoWay, and oneTime. As shown, binding 226 represents a twoWay binding and binding 228 represents a twoWay binding. One of these binding types is set to default. In one embodiment, the twoWay binding is set to the default binding type.

바인드타입(262)이 oneWay로 지정되면, 이는 관련된 소스 데이터 값에 변경이 일어날 때마다 바인딩 엔진(224)에게 대상 속성(예를 들면, UI 속성(210))을 갱신하라는 신호를 보낸다. oneWay 바인드타입은 데이터 값을 텍스트 색, 텍스트 배경 등의 편집 불가한 UI 속성에 바인딩하기에 유용하다. 이하 기술될 바와 같이, oneWay 바인드타입을 사용하는 것은 twoWay 바인드타입의 오버헤드(overhead)를 피할 수 있다. 오버헤드에서의 이러한 감소는 레이아웃 내용에 관한 UI 속성에서의 변경을 들을 때 가장 주목할 만하다. 이들 UI 속성의 경우, UI 속성의 각각의 자식의 동적인 속성들은 UI 속성의 변경에 대하여 반드시 들어야 한다. oneWay 바인드타입은 UI 속성에서의 변경이 다른 표현을 자세히 보여줄 때도 유용할 수 있다.If bind type 262 is specified as oneWay, it signals binding engine 224 to update the target attribute (eg, UI attribute 210) whenever a change is made to the associated source data value. The oneWay bind type is useful for binding data values to non-editable UI properties such as text color and text background. As will be described below, using the oneWay bind type can avoid the overhead of the twoWay bind type. This reduction in overhead is most notable when hearing changes in UI properties regarding layout content. In the case of these UI attributes, the dynamic attributes of each child of the UI attribute must be heard about the change of the UI attribute. The oneWay bind type can also be useful when changes in UI properties detail the different representations.

바인드타입(262)이 twoWay로 지정되면, 이는 바인딩 엔진(224)에 소스 데이 터 값 등에 일어나는 모든 변경마다 대상 속성을 갱신하라는 신호를 보낸다. twoWay 바인딩은 사용자에 의해서 행해진 임의의 변경을 소스 데이터 값에게 전달할 필요가 있는 편집 박스에 데이터를 바인딩시킬 때 특히 유용하다. twoWay 바인딩의 다른 시나리오는 다른 애플리케이션이 소스 데이터 필드를 담당하고 편집 박스에 이들 변경이 반영될 때이다.If bind type 262 is specified as twoWay, it signals binding engine 224 to update the target attribute for every change that occurs to the source data value and so on. The twoWay binding is particularly useful when binding data to an edit box that needs to communicate any changes made by the user to the source data values. Another scenario of the twoWay binding is when another application takes care of the source data fields and the edit box reflects these changes.

바인드타입(262)이 oneTime으로 정해지면, 이는 바인딩 엔진(224)에게 한번에 대상 속성을 초기화한 다음에는, 관련된 소스 데이터 값이 변경이 된 경우라도 착수되지 않은 상태로 남겨두라는 신호를 보낸다. oneTime 바인드타입은 몇몇의 대상 속성이 소스 필드로부터의 몇몇의 값으로 초기화될 필요가 있고 그 데이터 문맥은 미리 알려지지 않을 때 유용하다. 또한, oneTime 바인드타입은 소스 데이터 값들을 변경시키지 않는 읽기 전용으로 사용될 때 유용하다. 소스 데이터가 본 발명의 속성 통지 메카니즘(예를 들면, IPropertyChange 인터페이스)을 지원하지 않으면, oneWay로 지정된 대상 속성은 바인딩이 바인드타입으로 oneTime이 지정된 경우와 유사하게 갱신될 것이다.Once the bind type 262 is set to oneTime, it signals the binding engine 224 to initialize the target attribute at one time and then leave it uninitiated even if the associated source data value has changed. The oneTime bind type is useful when some target attribute needs to be initialized with some value from the source field and its data context is not known in advance. Also, the oneTime bind type is useful when used as read-only without changing the source data values. If the source data does not support the attribute notification mechanism (e.g., the IPropertyChange interface) of the present invention, the target attribute specified as oneWay will be updated similarly to the case where oneTime is specified as the bind type.

(본 명세서에서 이하 갱신타입(264)이라 칭할) 바인딩 속성 중 다른 하나는 바인드타입(262)을 twoWay으로 지정한 경우의 갱신 타입을 정의한다. 통상적으로, twoWay 바인딩은 대상 속성에서의 변경을 듣고 이들 변경을 소스 데이터 값으로 돌려보낸다. 이러한 과정을 소스의 갱신이라 칭한다. 정상적으로, 대상 속성이 변경될 때마다 갱신하는 것이 바람직하다. 그러나, 특정 상황에서는, 모든 키를 타이핑한 후마다 업데이트하는 것은 사이클을 낭비하고 사용자에게 타이핑 오류 등을 수정할 기회를 주지 않는다. 갱신타입(264)은 사용자가 갱신이 일어나야하는 때를 지정하도록 한다. 일 실시예에서, 갱신타입(264)은 Immediate, OnLostFocus, 및 Explicit를 지정할 수 있다. Immediate 지정은 바인딩 엔진에게 대상 속성에 모든 변경이 일어난 이후마다 소스 데이터 값을 갱신하라는 신호를 보낼 것이다. OnLostFocus 지정은 바인딩 엔진에게 대상 엘리먼트가 키보드 포커스를 잃어버린 이후에 소스 데이터 값을 갱신하라는 신호를 보낼 것이다. Explicit 지정은 바인딩 엔진에게 애플리케이션이 명시적으로 갱신을 요청할 때만 소스 데이터 값을 갱신하라는 신호를 보낼 것이다. 통상적으로, 이 명시적인 요청은 메소드를 통해 수행된다. 이러한 메소드는 갱신타입(264)의 임의의 설정으로 호출될 수 있지만, 이 메소드는 갱신타입이 Explicit로 설정되었을 때 유용하다. 한 예시적인 메소드가 이하에 나타난다:Another of the binding attributes (hereinafter referred to as update type 264 herein) defines an update type when the bind type 262 is designated as twoWay. Typically, twoWay bindings listen for changes in the target attribute and return those changes as source data values. This process is called update of source. Normally, it is desirable to update each time the target attribute changes. However, in certain situations, updating every key after every type wastes cycles and does not give the user the opportunity to correct typing errors and the like. Update type 264 allows the user to specify when an update should occur. In one embodiment, update type 264 may specify Immediate, OnLostFocus, and Explicit. Specifying Immediate will signal the binding engine to update the source data value after every change to the target attribute. Specifying OnLostFocus will signal the binding engine to update the source data value after the target element loses keyboard focus. An explicit specification will signal the binding engine to update the source data value only when the application explicitly requests an update. Typically, this explicit request is made through a method. This method can be called with any setting of update type 264, but this method is useful when the update type is set to Explicit. An example method is shown below:

Binding.GetBinding(myElement, myProperty).Update();Binding.GetBinding (myElement, myProperty) .Update ();

(본 명세서에서 이하 소스(266)라 칭할) 바인딩 속성 중 다른 하나는 바인딩을 위한 소스 데이터 아이템을 식별한다. 간단히 말하면, 도 4에 도시되고 이에 관련하여 기술된 바와 같이, 소스(266)는 프로그램적으로 또는 마크업으로 설정될 수 있다. 프로그램적으로는, 개발자는 바인딩이 소스 데이터 아이템으로 사용해야하는 객체에 객체 참조(objectref)를 제공한다. 간단히 말하면, 도 4에 관련하여 상세히 기술된 바와 같이, 마크업에서는, 소스 속성을 설정하는 다양한 메소드가 있다.The other of the binding attributes (hereafter referred to as source 266 herein) identifies a source data item for binding. In short, as shown in and described in FIG. 4, source 266 may be set programmatically or in markup. Programmatically, the developer provides an objectref (objectref) to the object that the binding should use as the source data item. In short, as described in detail with respect to FIG. 4, in markup, there are various methods for setting source attributes.

(본 명세서에서 이하 변환자(268)라 칭할) 바인딩 속성 중의 다른 하나는 클 래스 참조를 수용한다. 클래스 참조는 <Namespace>.<Class>, <Assembly>를 이용하여 지정될 수 있다. 지정된 클래스 참조는 바인딩 엔진(224)에 의해 호출되어 소스 데이터를 대상 속성에 의해 수용되는 포맷으로 변환한다. 도 2의 변환(244)에 나타나듯이, 클래스 참조 내의 메소드는 이러한 변환을 호출한다. 클래스 참조는 대상 속성을 소스 데이터 값에 의해 수용되는 포맷으로 변환하는 역변환(도시되지 않음)도 지정할 수 있다. 변환(244)은 UI 의미를 제공하거나 주문형 변환기일 수 있다.The other of the binding attributes (hereinafter referred to as translator 268 herein) accepts class references. Class references can be specified using <Namespace>. <Class>, <Assembly>. The specified class reference is called by the binding engine 224 to convert the source data into a format accepted by the target attribute. As shown in transform 244 of FIG. 2, the method in the class reference invokes this transform. The class reference may also specify an inverse transform (not shown) that converts the target attribute into a format accepted by the source data value. Transform 244 may provide UI semantics or be an on-demand converter.

(본 명세서에서 이하 컬쳐(culture)(270)라 칭할) 바인딩 속성 중 다른 하나는 소스 데이터 값을 변환한 이후/이전에 소스 데이터 값이 처리되야하는 방식을 정의한다. 컬쳐(270)는 변환자(268)에 관련하여 동작하여 개발자가 소스 데이터 값들을 변환하는 규칙을 지정하게 한다. 예를 들면, 컬쳐는 숫자, 날짜, 등에 대한 특정한 포맷을 지정할 수 있다. 일실시예에서, 컬쳐(270)는 타입 CultureInfo의 값을 수용한다. 개발자는 변환을 구현할 때 컬쳐(270)에 의해 지정된 규칙을 이용하는 옵션(option)을 가진다.The other of the binding attributes (hereinafter referred to as culture 270 herein) defines how the source data values should be processed after / before converting the source data values. Culture 270 operates in conjunction with transformer 268 to allow a developer to specify a rule for converting source data values. For example, a culture can specify a particular format for numbers, dates, and so forth. In one embodiment, culture 270 accepts a value of type CultureInfo. The developer has the option of using the rules specified by the culture 270 when implementing the transformation.

(본 명세서에서 이하 바인드플래그(bindflag)(272)라 칭할) 바인딩 속성 중 다른 하나는 데이터를 전송하라는 신호를 보내는 이벤트를 수신하는 메카니즘을 제공한다. 상술된 데이터 바인딩에 대한 방법이 비동기식이기 때문에, 바인드플래그(272)는 개발자가 대상이 새로운 값으로 갱신되었을 때를 알 수 있도록 한다. 이러한 메카니즘을 사용하기 위하여, 바인드플래그(272)는 "NotifyOnTransfer"로 설정된다. 그 다음 임의의 통상적인 방법을 이용하여 이벤트용 핸들러를 등록한다. 이러한 메카니즘의 하나의 예시적인 사용은 다음과 같다:The other of the binding attributes (hereinafter referred to as binddflag 272) provides a mechanism for receiving an event that signals to send data. Because the method for data binding described above is asynchronous, bind flag 272 allows the developer to know when the subject has been updated with a new value. To use this mechanism, bind flag 272 is set to "NotifyOnTransfer". Then register the handler for the event using any conventional method. One exemplary use of this mechanism is as follows:

Figure 112004030459098-PCT00001
Figure 112004030459098-PCT00001

위의 예제 코드에서 나타나듯이, 일단 OnDataTransfer 이벤트가 트리거(trigger)되었다면, 개발자는 동적인 속성이 갱신되었다는 것을 알게 된다. 그러므로, 개발자는 프로세싱을 더 하기 위하여 대상 값을 이용할 수 있다.As the example code above shows, once the OnDataTransfer event is triggered, the developer knows that the dynamic property has been updated. Therefore, the developer can use the target value for further processing.

도 3은 본 발명의 일 실시예에 따른 바인딩 메카니즘을 도시하는 논리적 흐름도이다. 개관으로, 바인딩 메카니즘은 바인딩을 설정하는 동작(action)을 수행하고(블럭 302-306) 그 다음 바인딩에서 지정된 대상 속성 또는 소스 데이터 값의 변경에 관한 동작(블럭 310-338)을 수행한다. 프로세싱은 블럭(302)에서 계속된다.3 is a logical flow diagram illustrating a binding mechanism in accordance with one embodiment of the present invention. In overview, the binding mechanism performs an action to set the binding (blocks 302-306) and then performs an action (blocks 310-338) on the change of the target attribute or source data value specified in the binding. Processing continues at block 302.

블럭(302)에서, 바인딩 객체는 생성 중에 지정된 인수(argument)들을 기반으로 생성된다. 간단히 말하면, 바인딩 객체(252)에 대한 각각의 속성(즉, 도 2에 도시된 속성(260-272))은 생성 중에 인수로 지정될 수 있다. 바인딩은 마크업을 통해, 프로그램적으로, 등으로 생성될 수 있다. 도 4는 바인딩을 생성하고 속성(260-272)을 지정하는 예시적인 구문을 나타낸다. 각각의 생성하는 방식은 소스 데이터 아이템, 소스 데이터 아이템의 데이터 값의 경로, 대상 UI 엘리먼트, 및 UI 엘리먼트의 대상 동적 속성을 지정한다. 본 블럭도에서 도시되지는 않았지만, 바인딩 객체의 속성들은 또한 애플리케이션 프로그래밍 인터페이스(application programming interface: API)의 이용을 통해서와 같이, 런타임 중에 동적으로 수정될 수 있다. 프로세싱은 블럭(306)으로 진행된다.At block 302, a binding object is created based on the arguments specified during creation. In short, each attribute for binding object 252 (ie, attributes 260-272 shown in FIG. 2) may be specified as an argument during generation. Bindings can be created via markup, programmatically, and so on. 4 illustrates example syntax for creating a binding and specifying attributes 260-272. Each generating manner specifies a source data item, a path of a data value of the source data item, a target UI element, and a target dynamic attribute of the UI element. Although not shown in this block diagram, the properties of the binding object may also be dynamically modified during runtime, such as through the use of an application programming interface (API). Processing proceeds to block 306.

블럭 304에서, 바인딩이 활성화된다. 일 실시예에서, 일단 바인딩 엔진이, 소스 객체가 존재하고, 대상 엘리먼트가 디스플레이될 준비가 되었다는 것 등과 같이, 바인딩에 충분한 환경이 있다는 것을 통지하면 바인딩은 자동적으로 활성화 될 수 있다. 바인딩 엔진은 바인딩의 활성화를 인식하는 것을 담당한다. 프로세싱은 블럭(304)에서 계속된다.At block 304, the binding is activated. In one embodiment, the binding can be activated automatically once the binding engine notifies that there is sufficient environment for the binding, such as that the source object exists, the target element is ready for display, and so on. The binding engine is responsible for recognizing the activation of the binding. Processing continues at block 304.

블럭(306)에서, 지정된 소스 속성의 값이 발견된다. 일 실시예에서, 리플렉션을 이용하여 그 값을 찾는다. 리플렉션은 호출자가 요청된 객체에 대한 정보를 얻도록 하는 일반적인 메카니즘이다. 이 정보는 지원되는 객체, 공개 속성 등을 포함한다. 다른 실시예에서는, 데이터 아이템이 집합체일 때, 바인딩 엔진은 현재 레코드를 사용할지 데이터 객체(집합체) 자체를 사용할지를 결정하는 복수의 발견적 학습법(heuristics)을 수행한다. 제1 발견적 학습법은 바인딩이 속성 또는 색인자를 참조할 때 적용된다. 이러한 상황에서, 집합체 객체의 대응하는 속성 또는 색인자는 이러한 속성 또는 색인자가 존재할 때 사용된다. 대안으로, 집합체의 현재 레코드는 데이터 아이템으로 사용된다. 다른 발견적 학습법은 어떠한 속성 또는 색인자도 존재하지 않을 때 적용된다. 이러한 상황에서, 집합체 객체는 집합체 객체가 유효하는한 대상 속성에 이용된다. 그렇지 않으면, 현재 레코드가 이용된다. 블럭(308)으로 진행하기 전에, 바인딩이 변환을 지정하면 변환이 그 값에 적용된다(블럭 307). 변환의 적용은 블럭(316)에 관련하여 이하에 상세히 기술된다. 프로세싱은 블럭(308)에서 계속된다.At block 306, the value of the specified source attribute is found. In one embodiment, reflection is used to find the value. Reflection is a general mechanism that allows the caller to get information about the requested object. This information includes supported objects, public properties, and so on. In another embodiment, when the data item is an aggregate, the binding engine performs a plurality of heuristics that determine whether to use the current record or the data object (the aggregate) itself. The first heuristic is applied when a binding refers to an attribute or indexer. In such a situation, the corresponding attribute or indexer of the aggregate object is used when such an attribute or indexer is present. Alternatively, the current record of the collection is used as a data item. Other heuristics apply when no attribute or indexer is present. In this situation, the aggregate object is used for the target attribute as long as the aggregate object is valid. Otherwise, the current record is used. Before proceeding to block 308, if the binding specifies a transform, the transform is applied to that value (block 307). The application of the transform is described in detail below with respect to block 316. Processing continues at block 308.

블럭(308)에서, 발견되었던 값이 대상 속성에 할당된다. 일실시예에서, 속성들의 계층구조를 유지하는 것을 담당하는 속성 엔진이 값을 할당할 수 있다. 다른 실시예에서는, 바인딩의 생성 중에 지정된 변환이 호출되어 대상 속성에 값을 할당하기 이전에 값을 변환할 수 있다. 더 세밀하게는, 속성 엔진은 속성이 새로운 값을 가진다고 표시할 수 있다. 일단 블럭(302-208)이 수행되었으면, 바인딩 엔진은 필요한 대상 속성 및 소스 데이터 값들을 갱신할 준비를 한다. 일반적으로, 바인딩 메카니즘은 비동기식이다.At block 308, the value that was found is assigned to the target attribute. In one embodiment, a property engine responsible for maintaining a hierarchy of properties may assign values. In another embodiment, the transformation specified during creation of the binding may be called to convert the value before assigning the value to the target attribute. More specifically, the attribute engine can indicate that an attribute has a new value. Once blocks 302-208 have been performed, the binding engine is ready to update the required target attribute and source data values. In general, the binding mechanism is asynchronous.

그러므로, 블럭(308)로부터, 2개의 비동기식 경로를 통하여 프로세싱은 계속된다. 제1 경로(블럭 310-318)는 대상 속성의 갱신과 관련되고 제2 경로(블럭 330-338)는 소스 데이터 값의 갱신과 관련된다. 이들 경로 각각은 이하 기술된다. 우선, 대상 속성을 갱신하는 것을 담당하는 경로가 논의된다.Therefore, from block 308, processing continues through the two asynchronous paths. The first path (blocks 310-318) is associated with the update of the target attribute and the second path (blocks 330-338) is associated with the update of the source data value. Each of these paths is described below. First, the path responsible for updating the target attribute is discussed.

결정 블럭(310)에서, 바인딩 엔진은 소스 데이터 값 및 대상 속성과 관련되는 바인딩이 바인드타입을 oneTime으로 지정하였는지 여부를 결정한다. 바인드타 입이 oneTime이라면, 이 바인딩에 대한 프로세싱이 완료되고 종료된다. 본 기술 분야에서 숙련된 기술을 가진 자라면, 바인드타입이 oneTime인 경우, 바인딩 엔진은 소스 속성 변경 이벤트를 경청하지 않는다는 것을 알 것이다. 그러므로, 실제 실행에서, 바인딩 엔진 내의 로직은 블럭(310)에서 도시되듯이 반드시 검사를 수행하지는 않는다. 게다가, 데이터 아이템이 IPropertyChange를 구현하지 않는다면, 프로세싱은 완료된다. 그러나, 바인드타입이 oneTime이 아니라면, 프로세싱은 블럭(312)에서 계속된다.At decision block 310, the binding engine determines whether the binding associated with the source data value and the target attribute specified the bind type as oneTime. If the bind type is oneTime, processing for this binding is complete and ends. Those skilled in the art will appreciate that if the bind type is oneTime, the binding engine will not listen for source attribute change events. Therefore, in actual execution, the logic in the binding engine does not necessarily perform the check as shown in block 310. In addition, if the data item does not implement IPropertyChange, processing is complete. However, if the bind type is not oneTime, processing continues at block 312.

블럭(312)에서, 바인딩 엔진은 바인딩에 관련된 통지를 경청한다. 데이터바인딩이 대상을 소스 데이터 값으로 직접적으로 갱신하지 않기 때문에, 본 발명은 통지 메카니즘을 구현한다. 속성 변경 통지 및 집합체 뷰 "CurrentChanged" 통지 등과 같은, 통지 메카니즘은 본 기술에서 알려져 있고 장황하게 논의될 필요는 없다. 데이터 값 변경, 페이지 탐색, 종료, 데이터 집합체에서 관심있는 레코드의 변경 등과 같이, 여러 동작들이 통지를 일으킨다. 본 발명이 데이터 집합체에서 관심있는 레코드의 변경시에 갱신을 트리거하기 때문에, 본 발명은 사용자 인터페이스와 로직을 더 분리하는 편리한 메카니즘을 제공한다. 예를 들면, 본 발명에 따라서, 개발자는 데이터 집합체에서 관심있는 다음 레코드를 변경하는 방법을 지정하도록 로직에 코드를 작성하는 것만이 필요하다. 일단 변경이 일어나면, 본 발명에 따라서, 바인딩 엔진은 이미 지정된 바인딩에 따라 사용자 인터페이스를 갱신할 것이다. 전술했듯이, 사용자 인터페이스와 로직의 이러한 분리는 사용자 인터페이스와 로직이 상호 작용할 때보다 더 강력하고 더 쉽게 유지되는 애플리케이션 을 제공한다.At block 312, the binding engine listens for notifications related to the binding. Since databinding does not update the destination directly with the source data value, the present invention implements a notification mechanism. Notification mechanisms, such as attribute change notifications and aggregate view "CurrentChanged" notifications, are known in the art and need not be discussed at length. Several actions cause notifications, such as changing data values, navigating pages, terminating, changing records of interest in a dataset, and so on. Since the present invention triggers an update upon the change of the record of interest in the data collection, the present invention provides a convenient mechanism for further separating the user interface and logic. For example, in accordance with the present invention, the developer only needs to write code in the logic to specify how to change the next record of interest in the data collection. Once the change has occurred, in accordance with the present invention, the binding engine will update the user interface according to the already specified binding. As mentioned above, this separation of user interface and logic provides an application that is more powerful and easier to maintain than when the user interface and logic interact.

이하 코드는 통지 메카니즘의 하나의 예시적인 구현이다. 이하 작성된 예시적인 코드가 C#으로 작성되었지만, 본 기술 분야에서 숙련된 기술을 가진 자는 다양한 언어 및 구문이 통지 메카니즘을 구현하는 데에 사용될 수 있다는 것을 알 것이다. 임의의 이러한 구현에서, 각각의 데이터 아이템에 의해 사용될 인터페이스가 정의된다. 각각의 데이터 아이템은 동적인 갱신을 구현하기 위하여 이러한 인터페이스를 상속한다.The following code is one exemplary implementation of the notification mechanism. Although the example code written below is written in C #, one skilled in the art will appreciate that various languages and syntaxes may be used to implement the notification mechanism. In any such implementation, an interface to be used by each data item is defined. Each data item inherits this interface to implement dynamic updates.

Figure 112004030459098-PCT00002
Figure 112004030459098-PCT00002

다음은, 이벤트 핸들러 및 이 핸들러의 인수가 정의된다.Next, event handlers and their arguments are defined.

Figure 112004030459098-PCT00003
Figure 112004030459098-PCT00003

클래스 PropertyChangeEventArgs는 스트링 타입을 가지는 PropertyName이라고 명명된 하나의 읽기 전용 속성을 포함한다. PropertyName 속성은 변경된 속성의 이름을 포함한다. 그 다음 각각의 소스 데이터 아이템은 그것의 속성 중 하나가 변경될 때마다 PropertyChanged 대리자를 호출함으로써 이러한 인터페이스를 구현한다. 이하는 통지 메카니즘에 대한 실시예에 따라서 소스 객체(예를 들면, 데 이터 아이템(232))를 구현하는 예시적인 예제이다.Class PropertyChangeEventArgs contains a single read-only property named PropertyName with a string type. PropertyName property contains the name of the property that has changed. Each source data item then implements this interface by calling the PropertyChanged delegate whenever one of its properties changes. The following is an illustrative example of implementing a source object (eg, data item 232) in accordance with an embodiment for a notification mechanism.

Figure 112004030459098-PCT00004
Figure 112004030459098-PCT00004

위의 예시적인 코드에서 나타나듯이, 'foo'속성에 대한 'set' 메소드는 새로운 값이 예전의 값과 다른지 판정한다. 값들이 다르면, 핸들러가 호출된다. 리플렉션을 수행하여 PropertyInfo를 획득한다. 더 상세히는, 일단 속성의 타입이 리플렉션을 통하여 얻어졌으면 바인딩 엔진은 그 속성의 타입을 캐슁(caching)할 수 있다. 이와 같이, 리플렉션은 한번만 수행되는 것이나, 속성에 대하여 통지를 수신할 때마다 수행되는 것은 아니다. 다른 상세한 예에서, 데이터 아이템의 데이터 값 각각으로의 모든 바인딩이 갱신되어야 할 것으로 신호를 보내기 위해 인수에서 빈 스트링을 통과시킬 수 있다. 이는 소스 객체가 어느 속성이 변경되었고 각각의 바인딩이 갱신되고자 하는지가 확실하지 않을 때 일어날 수 있다. 일단 바인딩 엔진이 데이터 소스 값이 변경되었다는 통지를 수신하면, 프로세싱은 판정 블럭(314)에서 계속된다.As the example code above shows, the 'set' method for the 'foo' attribute determines if the new value is different from the old one. If the values are different, the handler is called. Perform reflection to obtain PropertyInfo. More specifically, once the type of an attribute is obtained through reflection, the binding engine can cache the type of the attribute. As such, reflection is performed only once, but not every time a notification is received for an attribute. In another detailed example, an empty string can be passed in an argument to signal that all bindings to each data value of a data item should be updated. This can happen when the source object is not sure which attributes have changed and each binding is going to be updated. Once the binding engine receives the notification that the data source value has changed, processing continues at decision block 314.

판정 블럭(314)에서, 변경된 소스 데이터 값에 관련된 바인딩이 그 바인딩에 대한 변환을 지정하는지 여부에 대한 판정이 이루어진다. 바인딩이 변환을 지정하지 않으면, 프로세싱은 블럭(318)에서 계속된다. 그러나, 바인딩이 변환을 지정하면, 프로세싱은 블럭(316)에서 계속된다.At decision block 314, a determination is made whether the binding associated with the changed source data value specifies a translation for that binding. If the binding does not specify a transform, processing continues at block 318. However, if the binding specifies a transformation, processing continues at block 316.

블럭 316에서, 바인딩에서 지정된 변환이 수행된다. 일 실시예에서, 변환자(268)는 이하 기술된 객체이다:At block 316, the transformation specified in the binding is performed. In one embodiment, transformer 268 is an object described below:

Figure 112004030459098-PCT00005
Figure 112004030459098-PCT00005

위의 인터페이스에 대하여, o는 소스 값을 나타내고, dp는 대상 동적 속성을 나타내며, c는 변환 중에 사용된 컬쳐를 나타낸다. Transform() 메소드는 소스 값 o를 dp 타입의 동적 속성에 할당하기에 적절한 객체로 변환한다. Transform() 메소드는 바인딩의 소스 데이터 값을 대상 속성에게 전달할 때 호출된다. Transform() 메소드가 널(null)값을 리턴하면, 바인딩 엔진에 데이터 값의 전달을 중지하라는 신호가 보내어진다.For the above interface, o represents the source value, dp represents the target dynamic attribute, and c represents the culture used during the conversion. The Transform () method transforms the source value o into an object suitable for assignment to dynamic properties of type dp. The Transform () method is called when passing the binding's source data value to the target property. If the Transform () method returns null, the binding engine is signaled to stop passing data values.

변환자는 또한 바인딩에서 지정된 관련된 소스 데이터 값에 기반하여 폭, 높이, 폰트, 위치좌표(x,y) 등과 같은 UI 다른 속성들을 제어하는 데에 사용될 수 있 다. 변환자는 몇몇의 방법으로 데이터를 보여주기 위하여 데이터 값에 대한 로직을 수행할 수 있는 기능을 제공한다. 더 상세히는, 바인딩에서 지정된 변환 중에 컬쳐가 적용될 수 있다. 프로세싱은 블럭(318)에서 계속된다.Translators can also be used to control other UI properties such as width, height, font, position coordinates (x, y), and so on, based on the associated source data values specified in the binding. Transformers provide the ability to perform logic on data values to present data in several ways. More specifically, the culture can be applied during the transformation specified in the binding. Processing continues at block 318.

블럭(318)에서, 대상 속성이 갱신된다. 일실시예에서, 속성 엔진은 대상 속성에 값을 할당한다. 또한, 대상 속성은 새로운 값을 갖는 것으로 표시될 수 있다. 그 다음 프로세싱은 블럭(312)으로 진행하여 그 바인딩과 관련된 다음 속성 변경 통지를 경청한다. 일단 애플리케이션이 끝나거나 바인딩이 다른 방식으로 종료되면, 프로세싱은 종료된다.At block 318, the target attribute is updated. In one embodiment, the attribute engine assigns a value to the target attribute. In addition, the target attribute may be marked as having a new value. Processing then proceeds to block 312 to listen for the next attribute change notification associated with the binding. Once the application ends or the binding terminates otherwise, processing ends.

상술한 바와 같이, 블럭(308)으로부터, 프로세싱은 제2 경로를 통해 계속될 수 있다. 그러므로, 블럭(308)으로부터, 프로세싱은 판정 블럭(330)에서 계속된다. 블럭(310)에 관련하여 상술한 바와 같이, 바인딩 엔진 내의 로직은 판정 블럭(310) 중에 바인드타입의 검사를 반드시 수행하지 않을 수 있으며, 오히려, 바인딩 엔진이 바인딩이 생성되었을 때의 통지를 경청하도록 경청하지 않았기 때문에, 프로세스는 제2 경로를 통하여 진행(flow)되지 않는다. 그러나, 그 흐름을 기술하는 데에 있어서 명확함을 위하여, 바인드타입을 반영하는 판정 블럭이 도시된다. 그러므로, 판정 블럭(330)에서, 바인드타입이 twoWay로 지정된 바인딩인지 여부의 판정이 이루어진다. 전술한 바와 같이, twoWay는 대상 속성의 변경을 소스 데이터 값에 전달할 수 있도록 하게 한다. 바인딩이 바인드타입으로 twoWay를 지정하지 않는다면, 프로세싱은 종료된다. 그러나, 바인딩이 바인드타입으로 twoWay를 지정한다면, 프로세싱은 블럭(332)에서 계속된다. As discussed above, from block 308, processing may continue via the second path. Therefore, from block 308, processing continues at decision block 330. As described above with respect to block 310, the logic in the binding engine may not necessarily perform a check of the bind type during decision block 310, but rather the binding engine may listen for notification when a binding has been created. Since not listening, the process does not flow through the second path. However, for the sake of clarity in describing the flow, a decision block reflecting the bind type is shown. Therefore, at decision block 330, a determination is made whether the bind type is the binding designated as twoWay. As mentioned above, twoWay allows propagation of target property changes to source data values. If the binding does not specify twoWay as the bind type, processing ends. However, if the binding specifies twoWay as the bind type, processing continues at block 332.                 

블럭(332)에서, 바인딩 엔진은 소스 데이터 값으로의 갱신을 트리거하는 특정 동작을 인식할 것이다. 일단 트리거가 일어나면, 프로세싱은 판정 블럭(334)에서 계속된다.At block 332, the binding engine will recognize the particular action that triggers the update to the source data value. Once the trigger occurs, processing continues at decision block 334.

판정 블럭(334)에서, 바인딩이 그 바인딩에 대한 역변환을 지정할지 여부의 판정이 이루어진다. 바인딩이 역변환을 지정하지 않는다면, 프로세싱은 블럭(338)에서 계속된다. 그러나, 바인딩이 역변환을 지정한다면, 프로세싱은 블럭(336)에서 계속된다.At decision block 334, a determination is made whether the binding specifies an inverse transform for that binding. If the binding does not specify an inverse transform, processing continues at block 338. However, if the binding specifies an inverse transformation, processing continues at block 336.

블럭(336)에서, 역변환은 소스 속성에 적용된다. 일실시예에서, 역변환은 이하에 기술되는 객체이다.In block 336, an inverse transform is applied to the source attribute. In one embodiment, the inverse transform is an object described below.

Figure 112004030459098-PCT00006
Figure 112004030459098-PCT00006

위의 인터페이스에서, o는 소스값을 나타내고, c는 변환 중에 사용되는 컬쳐를 나타내며, pinfo는 대상 속성의 PropertyInfo를 나타낸다. InverseTransform() 메소드는 소스 값 o를 info 타입의 속성에 할당하기에 적절한 객체로 변환한다. 이러한 메소드는 바인딩의 대상 값을 소스로 전달할 때에 호출된다. InverserTransform() 메소드가 널 값을 리턴하면, 바인딩 엔진은 값을 전달하지 않는다. 일단 InverseTransform이 수행되면, 프로세싱은 블럭(338)에서 계속된다.In the above interface, o represents the source value, c represents the culture used during conversion, and pinfo represents the PropertyInfo of the target attribute. The InverseTransform () method transforms the source value o into an object suitable for assigning to an attribute of type info. These methods are called when passing the target value of the binding to the source. If the InverserTransform () method returns a null value, the binding engine does not pass a value. Once the InverseTransform is performed, processing continues at block 338.

블럭(338)에서, 소스 속성은 갱신타입에 따라서 갱신된다. 상술한 바와 같 이, 갱신 타입은 즉시(immediate), 온 로스 오브 포커스(on loss of focus), 명시적(explicit) 등일 수 있다. 일단 소스 속성이 갱신되면, 프로세싱은 종료된다.At block 338, the source attribute is updated according to the update type. As described above, the update type may be immediate, on loss of focus, explicit, or the like. Once the source attribute is updated, processing ends.

도 4는 바인딩을 생성하는 몇몇의 예시적인 수단을 도시한다. 생성 수단(400-410)은 마크업을 통하여 바인딩을 생성한다. 생성 수단(410)은 코드를 통한 바인딩을 생성한다. 도 4에 도시되는 예시적인 수단은 모든 것을 망라한 것이 아니다. 다른 수단(구문)이 본 발명의 범위에 벗어나지 않고 이용될 수 있다.4 illustrates some example means for creating a binding. The generating means 400-410 generate the binding through markup. The generating means 410 generates a binding through the code. The example means shown in FIG. 4 is not exhaustive. Other means (syntax) can be used without departing from the scope of the present invention.

생성 수단(400)은 엘리먼트(424)에 대한 (본 명세서에서 이하 DataContext(422)라 칭할) DataContext 이름/값 쌍 및 (본 명세서에서 이하 Id(420)라 칭할) Id 이름/값 쌍을 포함한다. 생성 수단(400)이 DataContext(422)를 포함하기 때문에, Id(420)가 필요하지는 않는다. Id(420)는 마크업의 ElementSource 또는 코드의 IdObjectReg를 사용하는 것과 같이, 명시적인 소스를 참조하는 것이 바람직할 때에 필요하다. 이들 사용은 둘다 이하 기술된다. DataContext(422)는 엘리먼트(예를 들면, 엘리먼트(424))에 대해 정의되는 동적 속성이다. DataContext(422)에 관련되는 값은 디폴트 소스 데이터 아이템을 나타내고 상속 가능한 속성이다. 바인딩 엔진은 DataContext(422)를 쿼리하고 엘리먼트(424)와 상속 엘리먼트(예를 들면, button 엘리먼트(426))의 바인딩을 생성할 때 DataContext(422)를 이용한다. 바인딩 엔진은 또한 DataContext(422)의 변경을 경청하여 이에 따라 갱신을 트리거한다. 그러므로, 요구사항은 아니지만, DataContext(422)는 일반적인 데이터 아이템에 바인딩되는 모든 속성에 대한 범위를 확립하는 편리한 메카니즘을 제공한다. 상속 엘리먼트는, 부모 엘리먼트의 DataContext(422)보다 우선할 자신의 고유한 DataContext를 가질 수 있다. 생성 수단(402)에 관하여 이하 기술할 바와 같이, 바인딩은 널 값이 아닌 소스를 제공함으로써, DataContext(422)를 오버라이딩(override)할 수 있다.The generating means 400 comprises a DataContext name / value pair (hereinafter referred to as DataContext 422) for the element 424 and an Id name / value pair (hereinafter referred to as the Id 420 herein). . Since the generating means 400 includes the DataContext 422, the Id 420 is not necessary. Id 420 is required when it is desirable to refer to an explicit source, such as using the Markup's ElementSource or the code's IdObjectReg. Both of these uses are described below. DataContext 422 is a dynamic attribute defined for an element (eg, element 424). The value associated with DataContext 422 represents a default source data item and is an inheritable attribute. The binding engine uses the DataContext 422 when querying the DataContext 422 and creating a binding of the element 424 and the inheriting element (eg, button element 426). The binding engine also listens for changes in DataContext 422 and thus triggers updates. Therefore, although not a requirement, DataContext 422 provides a convenient mechanism for establishing scope for all attributes bound to generic data items. An inheriting element may have its own DataContext that will take precedence over the DataContext 422 of the parent element. As will be described below with respect to the generating means 402, the binding can override the DataContext 422 by providing a non-null source.

대상 속성(예를 들면, Button.Text(428))을 가지는 button 엘리먼트(426)가 도시된다. 본 발명에 따라, "Data: Bind"를 만났을 때, 바인딩 엔진은 바인딩이 지정되고 있다는 것을 알게된다. 수반되는 이름/값 쌍은, 도 2에 지정되는 바인딩 속성(260-272)을 설정한다. 본 기술 분야에서 숙련된 기술을 가진 자라면 바인딩에 신호를 보내는 "Data: Bind"라는 용어는 임의의 용어이고 임의의 개수의 용어들이 본 발명을 벗어나지 않고 사용되고 있을 수 있다는 것을 알 것이다. 생성 수단(400)은 방대한 마크업 포맷을 나타낸다.A button element 426 is shown with a target attribute (eg, Button.Text 428). According to the invention, when encountering "Data: Bind", the binding engine knows that a binding is being specified. The accompanying name / value pair sets the binding attributes 260-272 specified in FIG. Those skilled in the art will appreciate that the term "Data: Bind" signaling a binding is any term and any number of terms may be used without departing from the invention. The generating means 400 represents a vast markup format.

생성 수단(402)은 조밀한 마크업 포맷을 나타낸다. UI 속성(예를 들면, Button Text)은 더 조밀한 방식으로 나타난다. 다시, "Data: Bind"는 바인딩 엔진에게 수반되는 것이 바인딩이라고 신호를 보내는 데 이용된다. 또한, 소정의 속성(260-272)에 대응하는 Data:Bind를 따르는 이름/값 쌍들은 도 2의 바인딩 객체(250)에 대해 전술하였다. 예를 들면, (본 명세서에서 이하 ElementSource(434)라 칭할) ElementSource 이름/값 쌍은 소스(266)와 대응한다.The generating means 402 represents a dense markup format. UI properties (eg Button Text) appear in a more compact way. Again, "Data: Bind" is used to signal the binding engine that the binding is binding. In addition, the name / value pairs following Data: Bind corresponding to certain attributes 260-272 have been described above with respect to binding object 250 of FIG. 2. For example, an ElementSource name / value pair (hereinafter referred to as ElementSource 434) corresponds to source 266.

마크업에는, 소스 속성을 설정하는 두 가지 메소드, ElementSource 및 DataSource, 가 있다. 이들 두 가지가 모두 사용되지 않는다면, 소스에 대한 디폴트 값은 널이며 이는 생성 중에 바인딩 엔진에게 엘리먼트의 DataContext 속성의 값을 얻고 그 값을 소스 객체로서 사용하라는 신호를 보낸다. Markup has two methods for setting source attributes: ElementSource and DataSource. If neither of these are used, the default value for the source is null, which signals the binding engine to get the value of the element's DataContext attribute during creation and use that value as the source object.                 

생성 수단(예를 들면, 생성 수단(402))이 ElementSource를 지정하면, 바인딩 엔진은 ID가 ElementSource 속성에 의해 지정된 엘리먼트를 찾는다. 그 다음 그러한 엘리먼트의 DataContext는 소스 객체로 이용된다. Parent/Parent 및 Previous/Previous와 같은, 관련된 경로 이름은 데이터 소스를 지정하는 데에 이용될 수 있다. 바인딩 엔진이 /Parent를 만나면, 이 엔진은 객체 계층의 관점에서 현재 엘리먼트의 엘리먼트 부모를 찾는다. 예를 들면, 엘리먼트가 고객 주문이라면, /Parent 지정은 바인딩 엔진에게 현재 주문에 대한 고객에 해당하는 엘리먼트를 찾으라는 신호를 보낼 수 있다. /Previous 지정은 내부의 리피터(repeater)의 범위에서 외부 리피터로부터 값을 사용하는 것이 바람직한 중첩된 리피터 경우에서 유용하다. /Previous 지정은 바인딩 엔진에게 리피터 아래의 현재 엘리먼트 이전의 엘리먼트를 찾으라는 신호를 보낸다. /Previous 지정은 선 그래프 등에서와 같이, 현재 아이템 이외에 현재 n개의 아이템을 엑세스하는 것이 바람직할 때 유용하다. 상속되는 /Previous 및 /Parent는 본 발명에 따라서 이용될 수 있다.If the generating means (e.g., generating means 402) specifies an ElementSource, the binding engine looks for the element whose ID is specified by the ElementSource attribute. Then the DataContext of that element is used as the source object. Related path names, such as Parent / Parent and Previous / Previous, can be used to specify the data source. When the binding engine encounters / Parent, it looks for the element parent of the current element in terms of the object hierarchy. For example, if the element is a customer order, the / Parent specification can signal the binding engine to find the element corresponding to the customer for the current order. The / Previous specification is useful in nested repeater cases where it is desirable to use a value from an external repeater in the range of an internal repeater. Specifying / Previous signals the binding engine to find the element before the current element under the repeater. The / Previous designation is useful when it is desirable to access the current n items in addition to the current item, such as in a line graph. Inherited / Previous and / Parent can be used in accordance with the present invention.

다른 실시예에서, 마크업은 데이터소스를 지정할 수 있다. 데이터소스가 지정되면, 바인딩 엔진은 자원의 리소스 id를 받는다. 자원이 데이터 속성을 드러내면, 바인딩 엔진은 바인딩의 소스를 데이터소스 자원의 데이터 속성에 의해 리턴되는 객체로 설정한다. 그렇지 않으면, 바인딩 엔진은 바인딩의 소스를 자원 객체 자체로 설정할 것이다.In other embodiments, the markup may specify a data source. If a datasource is specified, the binding engine receives the resource id of the resource. If the resource exposes a data attribute, the binding engine sets the source of the binding to the object returned by the data attribute of the data source resource. Otherwise, the binding engine will set the source of the binding to the resource object itself.

본 기술 분야에서 숙련된 기술을 가진 자라면 속성(260-272)이 마크업 언어를 이용하여 표현될 수 있는 다양한 방법이 있다는 것을 알 것이고, 그러므로 이들 다른 속성들 각각이 마크업 언어를 이용하여 표현될 수 있는 방식은 본 명세서에서 더 상세히 설명되지 않는다.Those skilled in the art will appreciate that there are a variety of ways in which attributes 260-272 can be expressed using markup languages, and therefore, each of these different attributes can be represented using markup languages. The manner in which this may be done is not described in more detail herein.

다음의 3개의 생성 수단(404-410)은 본 발명이 바인딩할 수 있는 유형의 아이템에서 예시적인 예제들을 제공한다. 생성 수단(404)은 부속성 및 색인자로의 바인딩의 지원을 예시한다. 생성 수단(404)은 C#으로 작성된 바인딩 di.a.b[3].c로 대응하는데, 여기서 di는 관련된 데이터 아이템이다. 데이터 아이템, di.a를 구현하는 클래스, di.a.b를 구현하는 클래스 및 di.a.b[3].c를 구현하는 클래스는 모두 본 발명의 통지 메카니즘을 지원하고(예를 들면, IPropertyChange) 그들의 속성이 변경되는 때를 통지하는 한, 생성 수단(404)를 이용하여 지정된 바인딩은 바인딩 엔진에게 소스 데이터 값의 변경을 반영하도록 바인딩된 속성(예를 들면, 대상 속성)을 자동 갱신하도록 할 것이다. The following three generating means 404-410 provide illustrative examples in the type of item to which the present invention can bind. The generating means 404 illustrates the support of attachment and binding to the index. The generating means 404 corresponds with the binding di.a.b [3] .c written in C #, where di is the associated data item. Data items, classes implementing di.a, classes implementing di.ab, and classes implementing di.ab [3] .c all support the notification mechanism of the present invention (eg, IPropertyChange) and their properties. The binding specified using the generating means 404 will cause the binding engine to automatically update the bound attribute (eg, the target attribute) to reflect the change in the source data value, as long as it is notified when this change is made.

생성 수단(406)은 데이터 집합체로의 바인딩의 지원을 도시한다. 바인딩 엔진은 자동적으로 각 레벨(여기에서 a, b, 및 c는 서로 다른 레벨을 나타낸다)에서 집합체의 현재 레코드를 이용한다. 예를 들면, di.a가 타입 IDataCollection을 가지면, 바인딩은 집합체의 현재 레코드를 이용하여 "b"속성을 페치한다. 그러므로, 바인딩 엔진은 현재 레코드가 변경될 때마다 자동적으로 데이터 집합체와 관련된 값들을 갱신한다.The generating means 406 shows the support of the binding to the data aggregate. The binding engine automatically uses the current record of the aggregate at each level, where a, b, and c represent different levels. For example, if di.a has a type IDataCollection, the binding fetches the "b" attribute using the current record of the collection. Therefore, the binding engine automatically updates the values associated with the data collection whenever the current record changes.

생성 수단(408)은 XML 노드로의 바인딩의 지원을 도시한다. 값으로의 경로(260)가 도 4에 도시된, "/Customer/Order[@OrderID=10]/Amount)"와 같은, 엑스패스 표현(xpath expression)을 이용하여 제공된다. 생성 수단(410)은 ADO 데이터 테이블로의 바인딩의 지원을 도시한다. 이 구현에서, 값으로의 경로(260)는 도 4에 도시된, "OrderID"와 같은, 특정 열에 대한 필드 이름으로 제공된다.The generating means 408 shows the support of the binding to the XML node. A path 260 to the value is provided using an xpath expression, such as " / Customer / Order [@ OrderID = 10] / Amount), shown in FIG. The generating means 410 shows the support of the binding to the ADO data table. In this implementation, the path 260 to the value is provided as the field name for the particular column, such as "OrderID", shown in FIG.

생성 수단(410)은 프로그램적으로 바인딩들을 생성한다. 개발자는 바인딩이 소스 데이터 아이템으로서 사용해야되는 객체에 객체참조를 제공한다. 생성 수단(412)에 도시된 프로그램문은 생성 수단(410)에 의해 도시된 것과 동일한 행위를 하는 바인딩을 생성한다. SetBinding 메소드는 프로그래머가 상술한 바인딩 속성 중 임의의 것을 지정할 수 있게 하는 복수의 보다 복잡한 변형들을 가진다. 위의 간단한 예제는 소스 객체로서 button의 DataContext를 사용한다. 이하 프로그램문은 소스로서 (런타임에 알려진) 특정 객체를 이용하는 oneWay 바인딩을 생성한다.The generating means 410 generates the bindings programmatically. The developer provides an object reference to an object whose binding should be used as a source data item. The program statement shown in the generating means 412 generates a binding that performs the same action as that shown by the generating means 410. The SetBinding method has a number of more complex variations that allow the programmer to specify any of the binding attributes described above. The simple example above uses the button's DataContext as the source object. The following program statement creates a oneWay binding that uses a specific object (known at runtime) as its source.

Figure 112004030459098-PCT00007
Figure 112004030459098-PCT00007

이하 코드 예제는 본 발명의 바인딩 메카니즘을 통하여 데이터에 대해 사용자 인터페이스 속성을 제어하는 하나의 구현을 나타낸다. 이러한 예에서, 데이터 값(예를 들면, myInteger) 및 UI 속성(예를 들면, TextContent)은 바인딩으로 활성 화된다. 또한, 변환(예를 들면, MyTransformer)이 이러한 바인딩에 지정된다.The following code example illustrates one implementation of controlling user interface attributes for data through the binding mechanism of the present invention. In this example, the data value (eg myInteger) and the UI property (eg TextContent) are activated with a binding. In addition, a transform (eg, MyTransformer) is assigned to this binding.

Figure 112004030459098-PCT00008
Figure 112004030459098-PCT00008

그러므로, 기술된 바와 같이, 본 발명은 사용자 인터페이스와 로직의 코딩에서의 변경이 분리될 수 있는 방식으로 소스 데이터 값을 대상 속성과 관련시키는 메카니즘을 제공한다. 그러므로, 본 발명은 개발자가 그들이 애플리케이션의 기초적인 로직의 수정 없이도 사용자 인터페이스를 쉽게 수정하고 강화할 수 있게 한다.Therefore, as described, the present invention provides a mechanism for associating source data values with target attributes in such a way that changes in coding of the user interface and logic can be separated. Therefore, the present invention allows developers to easily modify and enhance the user interface without modifying the basic logic of the application.

상기 명세서에서, 예제 및 데이터는 제작의 완전한 설명 및 본 발명의 구성물의 이용을 제공한다. 본 발명의 다양한 실시예가 본 발명의 사상 및 범위를 벗어나지 않고 이루어질 수 있기 때문에, 본 발명은 이하의 특허 청구 범위에 귀속한다.In the foregoing specification, examples and data provide a complete description of the fabrication and use of the constructs of the invention. Since various embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims below.

Claims (38)

데이터에 따라 사용자 인터페이스(user interface) 속성을 제어하는 컴퓨터 실행가능 명령어를 가지는 컴퓨터 판독가능 매체에 있어서,A computer readable medium having computer executable instructions for controlling a user interface attribute in accordance with data, the method comprising: 상기 명령어는The command is 대상 속성을 소스 데이터 값에 관련시키는 바인딩(binding)을 생성하는 동작, 및Generating a binding that associates a target attribute with a source data value, and 상기 소스 데이터 값이 변경을 겪는다는 통지를 수신할 때, 상기 바인딩에 기반하여 상기 대상 속성에 상기 변경을 반영하는 동작을 포함하는 컴퓨터 판독가능 매체.And upon receiving a notification that the source data value is undergoing a change, reflecting the change in the target attribute based on the binding. 제1항에 있어서,The method of claim 1, 상기 대상 속성은 사용자 인터페이스 속성을 포함하는 컴퓨터 판독가능 매체.And the target attribute comprises a user interface attribute. 제1항에 있어서,The method of claim 1, 상기 대상 속성에 상기 변경을 반영하기 이전에 상기 소스 데이터 값에 변환을 적용하는 동작을 더 포함하는 컴퓨터 판독가능 매체.And applying a transform to the source data value prior to reflecting the change to the target attribute. 제1항에 있어서,The method of claim 1, 상기 바인딩을 생성하는 동작은 상기 바인딩에 대한 바인딩 타입을 지정하는 동작을 포함하는 컴퓨터 판독가능 매체.Creating the binding comprises specifying a binding type for the binding. 제4항에 있어서,The method of claim 4, wherein 상기 바인딩 타입은 상기 바인딩이 활성화 될 때 상기 소스 데이터에 기반하여 갱신되는 상기 대상 속성을 산출하는 제1 바인딩 타입을 포함하는 컴퓨터 판독가능 매체.The binding type comprises a first binding type that calculates the target attribute that is updated based on the source data when the binding is activated. 제4항에 있어서,The method of claim 4, wherein 상기 바인딩 타입은 상기 소스 데이터 값이 상기 변경을 겪을 때 갱신되는 상기 대상 속성을 산출하는 제2 바인딩 타입을 포함하는 컴퓨터 판독가능 매체.The binding type comprises a second binding type that yields the target attribute that is updated when the source data value undergoes the change. 제1항에 있어서,The method of claim 1, 상기 대상 속성에 대한 대상 변경에 의해 상기 소스 데이터 값을 갱신하는 동작을 더 포함하는 컴퓨터 판독가능 매체.Updating the source data value by changing a destination for the destination attribute. 제7항에 있어서,The method of claim 7, wherein 상기 소스 데이터 값을 갱신하는 동작은 상기 대상 변경 거의 직후에 비동기식으로 수행되는 컴퓨터 판독가능 매체.Updating the source data value is performed asynchronously shortly after the object change. 제7항에 있어서,The method of claim 7, wherein 상기 소스 데이터 값을 갱신하는 동작은 상기 대상 속성의 포커스(focus)가 상실되었을 때 비동기식으로 수행되는 컴퓨터 판독가능 매체.Updating the source data value is performed asynchronously when the focus of the target attribute is lost. 제7항에 있어서,The method of claim 7, wherein 상기 소스 데이터 값을 갱신하는 동작은 애플리케이션에 의해 명시적으로 수행되는 컴퓨터 판독가능 매체.Updating the source data value is performed explicitly by an application. 제1항에 있어서,The method of claim 1, 상기 바인딩을 생성하는 동작은 코드를 이용하여 지정되는 컴퓨터 판독가능 매체.Generating the binding is specified using code. 제1항에 있어서,The method of claim 1, 상기 바인딩을 생성하는 동작은 마크업(markup) 언어를 이용하여 지정되는 컴퓨터 판독가능 매체.And wherein said generating said binding is specified using a markup language. 제1항에 있어서,The method of claim 1, 상기 대상 속성을 다른 소스 데이터 값과 관련시키는 다른 바인딩을 생성하는 동작을 더 포함하는 컴퓨터 판독가능 매체.Creating another binding that associates the target attribute with another source data value. 제1항에 있어서,The method of claim 1, 상기 소스 데이터 값은 데이터 소스와 관련되는 컴퓨터 판독가능 매체.And the source data value is associated with a data source. 제14항에 있어서,The method of claim 14, 상기 데이터 소스는 XML의 XPath, ADO의 열, 및 리플렉션(reflection)을 통하여 지정되는 컴퓨터 판독가능 매체.The data source is specified via XPath in XML, columns in ADO, and reflection. 데이터에 따라 사용자 인터페이스 속성을 제어하는 컴퓨터 시스템에 있어서,In a computer system that controls user interface attributes in accordance with data, 프로세서, 및Processor, and 상기 프로세서에 의한 실행을 위해 상기 메모리로 로딩(load)되는 복수의 컴퓨터 실행가능 명령어 용으로 할당되는 메모리를 포함하고,A memory allocated for a plurality of computer-executable instructions loaded into the memory for execution by the processor, 상기 컴퓨터 실행가능 명령어는 The computer executable instructions are 대상 속성을 소스 데이터 값과 관련시키는 바인딩을 생성하는 동작, 및Creating a binding that associates a target attribute with a source data value, and 상기 소스 데이터 값이 변경을 겪는다는 통지를 수신할 때, 상기 바인딩에 기반하여 상기 대상 속성에 상기 변경을 반영하는 동작을 포함하는 방법을 수행하는When receiving a notification that the source data value is undergoing a change, reflecting the change to the target attribute based on the binding. 컴퓨터 시스템.Computer system. 제16항에 있어서,The method of claim 16, 상기 대상 속성은 사용자 인터페이스 속성을 포함하는 컴퓨터 시스템.And the target attribute comprises a user interface attribute. 제16항에 있어서,The method of claim 16, 상기 대상 속성에 상기 변경을 반영하기 전에 상기 소스 데이터 값에 대해 변환을 적용하는 동작을 더 포함하는 컴퓨터 시스템.And applying a transform to the source data value prior to reflecting the change to the target attribute. 제16항에 있어서,The method of claim 16, 상기 바인딩을 생성하는 동작은 상기 바인딩에 대한 바인딩 타입을 지정하는 동작을 포함하는 컴퓨터 시스템.Creating the binding comprises specifying a binding type for the binding. 제19항에 있어서,The method of claim 19, 상기 바인딩 타입은 상기 바인딩이 활성화될 때 상기 소스 데이터에 기반하여 갱신되는 상기 대상 속성을 산출하는 제1 바인딩 타입을 포함하는 컴퓨터 시스템.The binding type comprises a first binding type that calculates the target attribute that is updated based on the source data when the binding is activated. 제19항에 있어서,The method of claim 19, 상기 바인딩 타입은 상기 소스 데이터 값이 상기 변경을 겪을 때 갱신되는 상기 대상 속성을 산출하는 제2 바인딩 타입을 포함하는 컴퓨터 시스템.The binding type comprises a second binding type that yields the target attribute that is updated when the source data value undergoes the change. 제16항에 있어서,The method of claim 16, 상기 대상 속성에 대한 대상 변경에 의해 상기 소스 데이터 값을 갱신하는 동작을 더 포함하는 컴퓨터 시스템.Updating the source data value by changing a target for the target attribute. 제22항에 있어서,The method of claim 22, 상기 소스 데이터 값을 갱신하는 동작은 상기 대상 변경 거의 직후에 비동기식으로 수행되는 컴퓨터 시스템.Updating the source data value is performed asynchronously shortly after the object change. 제22항에 있어서,The method of claim 22, 상기 소스 데이터 값을 갱신하는 동작은 상기 대상 속성의 포커스가 상실되었을 때 비동기식으로 수행되는 컴퓨터 시스템.Updating the source data value is performed asynchronously when the focus of the target attribute is lost. 제22항에 있어서,The method of claim 22, 상기 소스 데이터 값을 갱신하는 동작은 애플리케이션에 의해 명시적으로 수행되는 컴퓨터 시스템.Updating the source data value is performed explicitly by an application. 제16항에 있어서,The method of claim 16, 상기 바인딩을 생성하는 동작은 코드를 이용하여 지정되는 컴퓨터 시스템.Creating the binding is specified using code. 제16항에 있어서,The method of claim 16, 상기 바인딩을 생성하는 동작은 마크업 언어를 이용하여 지정되는 컴퓨터 시스템.Creating the binding is specified using a markup language. 데이터에 따라 사용자 인터페이스 속성을 제어하는 컴퓨터 실행가능 명령어를 가지는 컴퓨터 판독가능 매체에 있어서, A computer readable medium having computer executable instructions for controlling user interface attributes in accordance with data, the method comprising: 상기 명령어는The command is 애플리케이션 내의 데이터 값을 조작하는 로직(logic) 영역,Logic areas for manipulating data values within the application, 상기 애플리케이션 내의 사용자 인터페이스 영역, - 상기 사용자 인터페이스 영역은 사용자 인터페이스 속성을 디스플레이(display)하는 것을 담당하며, 상기 로직 영역과는 독립적임 -, 및A user interface area in the application, the user interface area being responsible for displaying user interface attributes, independent of the logic area, and 적어도 하나의 바인딩 명세, - 상기 바인딩 명세는 상기 사용자 인터페이스 속성과 상기 데이터 값 간의 관계를 기술하여 상기 데이터 값이 변경을 겪을 때 시스템 레벨 코드가 통지되어 상기 시스템 레벨 코드는 상기 사용자 인터페이스 영역에 상기 사용자 인터페이스 속성의 변경을 반영하도록 지시할 수 있음 -At least one binding specification, wherein the binding specification describes a relationship between the user interface attribute and the data value so that a system level code is notified when the data value undergoes a change so that the system level code is sent to the user interface area. Can instruct to reflect changes in interface properties- 을 포함하는 컴퓨터 판독가능 매체.Computer-readable medium comprising a. 제28항에 있어서,The method of claim 28, 상기 바인딩 명세는 코드에 의해 지정되는 컴퓨터 판독가능 매체.And the binding specification is specified by code. 제28항에 있어서,The method of claim 28, 상기 바인딩 명세는 마크업 언어에 의해 지정되는 컴퓨터 판독가능 매체.And the binding specification is specified by a markup language. 제28항에 있어서,The method of claim 28, 상기 바인딩 명세는 소스 데이터 아이템, 상기 소스 데이터 아이템의 상기 데이터 값으로의 경로, 대상 사용자 인터페이스 엘리먼트, 및 상기 대상 사용자 인터페이스 엘리먼트에서의 상기 사용자 인터페이스 속성을 식별하는 컴퓨터 판독가능 매체.The binding specification identifies a source data item, a path to the data value of the source data item, a target user interface element, and the user interface attribute at the target user interface element. 제31항에 있어서,The method of claim 31, wherein 상기 바인딩 명세는 또한 상기 사용자 인터페이스 속성에 상기 변경을 반영하기 전에 상기 데이터 값에 적용되는 변환을 식별하는 컴퓨터 판독가능 매체.The binding specification also identifies a transformation to be applied to the data value prior to reflecting the change in the user interface attribute. 제31항에 있어서,The method of claim 31, wherein 상기 바인딩 명세는 또한 상기 바인딩에 대한 데이터 타입을 식별하는 컴퓨터 판독가능 매체.The binding specification also identifies a data type for the binding. 제33항에 있어서,The method of claim 33, wherein 상기 바인딩 타입은 상기 바인딩이 활성화 될 때 상기 데이터 값에 기반하여 갱신되는 상기 사용자 인터페이스 속성을 산출하는 제1 바인딩 타입을 포함하는 컴퓨터 판독가능 매체.The binding type comprises a first binding type that calculates the user interface attribute that is updated based on the data value when the binding is activated. 제33항에 있어서,The method of claim 33, wherein 상기 바인딩 타입은 상기 데이터 값이 상기 변경을 겪을 때 갱신되는 상기 사용자 인터페이스 속성을 산출하는 제2 바인딩 타입을 포함하는 컴퓨터 판독가능 매체.The binding type comprises a second binding type that yields the user interface attribute that is updated when the data value undergoes the change. 제31항에 있어서,The method of claim 31, wherein 상기 바인딩 명세는 또한 상기 사용자 인터페이스 속성이 UI 변경을 겪을 때 상기 데이터 값이 갱신되는 것을 지정하는 컴퓨터 판독가능 매체.The binding specification also specifies that the data value is updated when the user interface attribute undergoes a UI change. 제36항에 있어서,The method of claim 36, 상기 데이터 값은 상기 UI 변경 거의 직후에 비동기식으로 갱신되는 컴퓨터 판독가능 매체.And the data value is updated asynchronously shortly after the UI change. 제36항에 있어서,The method of claim 36, 상기 데이터 값은 상기 사용자 인터페이스 속성의 포커스가 상실되었을 때 비동기식으로 갱신되는 컴퓨터 판독가능 매체.The data value is updated asynchronously when the focus of the user interface attribute is lost.
KR1020047010780A 2004-07-09 2003-05-17 System and method for controlling user interface properties with data KR20060059335A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020047010780A KR20060059335A (en) 2004-07-09 2003-05-17 System and method for controlling user interface properties with data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020047010780A KR20060059335A (en) 2004-07-09 2003-05-17 System and method for controlling user interface properties with data

Publications (1)

Publication Number Publication Date
KR20060059335A true KR20060059335A (en) 2006-06-01

Family

ID=37156541

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010780A KR20060059335A (en) 2004-07-09 2003-05-17 System and method for controlling user interface properties with data

Country Status (1)

Country Link
KR (1) KR20060059335A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078022A1 (en) * 2011-11-21 2013-05-30 Microsoft Corporation Asynchronous data binding

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013078022A1 (en) * 2011-11-21 2013-05-30 Microsoft Corporation Asynchronous data binding
US8499122B2 (en) 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
US8725949B2 (en) 2011-11-21 2014-05-13 Microsoft Corporation Asynchronous data binding

Similar Documents

Publication Publication Date Title
US7519969B2 (en) System and method for controlling user interface properties with data
KR101331260B1 (en) Metadata driven user interface
Nagel et al. Professional c# 2005
EP0811193B1 (en) Graphical environment for managing and developing applications
US6854123B1 (en) Method, system, and program for mapping standard application program interfaces (APIs) to user interface APIs
US6957439B1 (en) Method, system, and program for mapping objects in different language formats
KR101377311B1 (en) Integrating charts in documents
KR101130500B1 (en) Mechanism for providing data driven command line output
US20090077091A1 (en) System for development and hosting of network applications
US7765464B2 (en) Method and system for dynamically assembling presentations of web pages
US20050188350A1 (en) Data binding
KR101150059B1 (en) Mechanism for providing extended functionality to command line instructions
US8667508B2 (en) Method for providing stand-in objects
US7007266B1 (en) Method and software system for modularizing software components for business transaction applications
JP5697661B2 (en) Platform extensibility framework
US7860894B2 (en) Template driven type and mode conversion
KR101130455B1 (en) Mechanism for obtaining and applying constraints to constructs within an interactive environment
JPH01126736A (en) Data processing system
US20050289450A1 (en) User interface virtualization
US7506341B2 (en) System and method for controlling user interface properties with data
AU2003239503B2 (en) System and method for controlling user interface properties with data
KR20040097937A (en) System and method for employing object-based pipelines
KR20060059335A (en) System and method for controlling user interface properties with data
JP5010625B2 (en) Recording medium and system storing program for controlling user interface property by data
Abrams et al. User interface markup language (UIML) specification

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application