RU2358307C2 - System and method of controlling user interface properties using data - Google Patents

System and method of controlling user interface properties using data Download PDF

Info

Publication number
RU2358307C2
RU2358307C2 RU2004119949/09A RU2004119949A RU2358307C2 RU 2358307 C2 RU2358307 C2 RU 2358307C2 RU 2004119949/09 A RU2004119949/09 A RU 2004119949/09A RU 2004119949 A RU2004119949 A RU 2004119949A RU 2358307 C2 RU2358307 C2 RU 2358307C2
Authority
RU
Russia
Prior art keywords
binding
user interface
data
property
type
Prior art date
Application number
RU2004119949/09A
Other languages
Russian (ru)
Other versions
RU2004119949A (en
Inventor
Сэмьюэль В. БЕНТ (US)
Сэмьюэль В. БЕНТ
Намита ГУПТА (US)
Намита ГУПТА
Дэвид Дж. ДЖЕННИ (US)
Дэвид Дж. ДЖЕННИ
Александер И. ХОПМАНН (US)
Александер И. ХОПМАНН
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 RU2004119949/09A priority Critical patent/RU2358307C2/en
Publication of RU2004119949A publication Critical patent/RU2004119949A/en
Application granted granted Critical
Publication of RU2358307C2 publication Critical patent/RU2358307C2/en

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

FIELD: physics; computer engineering.
SUBSTANCE: present invention relates to systems and methods of controlling properties of a user interface using data. The application is divided into independent parts, a logic part and a user interface part. The logic part manipulates data values in the application. The user interface part is responsible for displaying user interface properties. A binding specification describes the interrelationship between the user interface properties and data value. A system level code uses the binding specification to determine how it informs on data changes and how it orders the user interface part to display changes in the user interface properties. The binding specification identifies the source data element, the path to the data value in the source data element, the user interface target element and the user interface property on the user interface target element. Binding can be done using a code or mark-up language.
EFFECT: separation of user interface and data from application logic due to provision for a mechanism of binding data to the user interface.
25 cl, 4 dwg

Description

Данная заявка показана как заявка РСТ, поданная 17 мая 2003 г. корпорацией Майкрософт, созданной и находящейся США, с указанием всех стран, кроме США.This application is shown as the PCT application, filed May 17, 2003 by Microsoft, created and located in the United States, listing all countries except the United States.

Предпосылки изобретенияBACKGROUND OF THE INVENTION

Способность пользователя понимать и осмысливать информацию зависит от того, каким образом информация представляется пользователям. На компьютерных дисплеях вошло в традицию выделять отдельные фрагменты информации с использованием цвета, стилей шрифта и т.п. Такой способ выделения позволяет пользователям легко воспринимать важность информации. Код, управляющий представлением информации (пользовательский интерфейс), и код, выполняющий логику приложения над информацией, обычно тесно взаимосвязаны. Например, логика назначает свойства пользовательского интерфейса (например, цвет, шрифт, положение, размер) непосредственно с помощью данных. Таким образом, при изменении пользовательского интерфейса должна изменяться и логика. Например, в случае текстового окна, код пользовательского интерфейса отслеживает изменение текста, и в случае изменения код пользовательского интерфейса подтверждает правильность измененного текста, а затем отображает измененный текст. Такая тесная связь пользовательского интерфейса и логики обусловливает недолговечность кода. Поддержание этого недолговечного кода очень дорого стоит и требует больших затрат времени.The user's ability to understand and comprehend information depends on how the information is presented to users. On computer displays, it has become a tradition to highlight individual pieces of information using colors, font styles, etc. This selection method allows users to easily perceive the importance of information. The code that controls the presentation of information (user interface) and the code that runs the application logic on the information are usually closely interconnected. For example, logic assigns user interface properties (e.g. color, font, position, size) directly using data. Thus, when changing the user interface, the logic must also change. For example, in the case of a text box, the user interface code monitors the change in text, and in the case of a change, the user interface code confirms the correctness of the changed text, and then displays the changed text. Such a close relationship between the user interface and logic causes the fragility of the code. Maintaining this short-lived code is very expensive and time consuming.

Сущность изобретенияSUMMARY OF THE INVENTION

Настоящее изобретение относится к системе и способу управления пользовательским интерфейсом с помощью данных. Изобретение позволяет отделить пользовательский интерфейс и данные от логики приложения, благодаря обеспечению механизма привязки данных к пользовательскому интерфейсу. Изобретение позволяет разработчикам пользовательского интерфейса и авторам приложений, которые пишут логику приложения, работать независимо. Ни разработчикам, ни авторам не нужно понимать коды друг друга, и ни один из них не влияет на разработки другого. Это изобретение также позволяет очень легко вносить изменения в пользовательский интерфейс. Например, при появлении новых и более привлекательных для пользователя платформ пользовательского интерфейса или при желании разработчика пользовательского интерфейса изменить облик приложения разработчик не обязан вносить изменения в логику приложения. Кроме того, механизм привязки данных к пользовательскому интерфейсу является динамическим. Это позволяет автоматически отражать любые изменения данных в представлении. Кроме того, любой ввод пользователя через пользовательский интерфейс может автоматически обновлять данные. Благодаря тому, что настоящее изобретение позволяет привязывать не только аспекты отображения данных пользовательского интерфейса (например, текст), но и визуальные аспекты (например, фон, размер шрифта и т.п.), можно обеспечивать описательное, визуально усовершенствованное и гибкое представление данных. Например, можно отображать отрицательные числа красным цветом или указывать рост курса акций стрелкой, направленной вверх.The present invention relates to a system and method for controlling a user interface using data. The invention allows to separate the user interface and data from the application logic, by providing a mechanism for binding data to the user interface. The invention allows user interface developers and application authors who write application logic to work independently. Neither the developers nor the authors need to understand each other's codes, and none of them affects the development of the other. This invention also makes it very easy to make changes to the user interface. For example, when new and more attractive user interface platforms appear, or if the user interface developer wants to change the appearance of the application, the developer is not required to make changes to the application logic. In addition, the mechanism for binding data to the user interface is dynamic. This allows you to automatically reflect any data changes in the view. In addition, any user input through the user interface can automatically update data. Due to the fact that the present invention allows to link not only the display aspects of user interface data (e.g., text), but also the visual aspects (e.g., background, font size, etc.), a descriptive, visually enhanced and flexible presentation of the data can be provided. For example, you can display negative numbers in red or indicate the growth of the stock price with the arrow pointing up.

Таким образом, согласно настоящему изобретению, приложение делится на независимые части, часть логики и часть ПИ. Часть логики манипулирует значениями данных в приложении. Часть ПИ отвечает за представление данных. Спецификация привязки описывает взаимосвязь между свойством ПИ и значением данных. Спецификация привязки используется кодом системного уровня для определения, каким образом он извещается об изменении значения данных и каким образом он предписывает части ПИ отражать изменение в свойстве ПИ. Спецификация привязки идентифицирует элемент данных источника, путь к значению данных в данных источника, целевой элемент ПИ и свойство ПИ на целевом элементе ПИ. Привязку можно задавать посредством кода или языка разметки.Thus, according to the present invention, the application is divided into independent parts, a logic part and a PI part. Part of the logic manipulates data values in an application. Part of the PI is responsible for reporting data. The binding specification describes the relationship between the PI property and the data value. The binding specification is used by the system level code to determine how it is notified of a change in the data value and how it directs parts of the UI to reflect the change in the UI property. The binding specification identifies the source data element, the path to the data value in the source data, the target PI element, and the PI property on the target PI element. The binding can be specified using a code or markup language.

Краткое описание чертежейBrief Description of the Drawings

Фиг. 1 - блок-схема иллюстративного вычислительного устройства, которое можно использовать в иллюстративных реализациях настоящего изобретения.FIG. 1 is a block diagram of an illustrative computing device that can be used in illustrative implementations of the present invention.

Фиг. 2 - функциональная блок-схема одного варианта осуществления управления свойствами пользовательского интерфейса с помощью данных согласно настоящему изобретению.FIG. 2 is a functional block diagram of one embodiment of managing user interface properties using data according to the present invention.

Фиг. 3 - логическая последовательность операций процесса связывания пользовательского интерфейса со значением данных согласно одному варианту осуществления настоящего изобретения.FIG. 3 is a flowchart of a process for associating a user interface with a data value according to one embodiment of the present invention.

Фиг. 4 - несколько иллюстративных синтаксисов связывания свойств пользовательского интерфейса с данными согласно настоящему изобретению.FIG. 4 illustrates several illustrative syntaxes for associating user interface properties with data according to the present invention.

Подробное описание предпочтительного варианта осуществленияDetailed Description of a Preferred Embodiment

Настоящее изобретение относится к системе и способу управления пользовательским интерфейсом с помощью данных. Изобретение позволяет отделить пользовательский интерфейс от логики приложения, благодаря обеспечению механизма связывания данных с пользовательским интерфейсом. Согласно нижеследующему подробному описанию, это отделение пользовательского интерфейса и данных от соответствующей логики позволяет разным группам разработчиков работать независимо над пользовательским интерфейсом и логикой, не влияя на разработку кода другой группы. Кроме того, согласно нижеследующему подробному описанию, настоящее изобретение предусматривает систему и механизм автоматической передачи значений от источников данных на пользовательский интерфейс и обратно. В нижеследующем описании термин «привязка данных» означает процесс связывания значений данных со свойствами ПИ, перенос и обновление значений данных и т.д.The present invention relates to a system and method for controlling a user interface using data. The invention allows to separate the user interface from the application logic, by providing a mechanism for linking data with the user interface. According to the following detailed description, this separation of the user interface and data from the corresponding logic allows different groups of developers to work independently on the user interface and logic, without affecting the development of the code of another group. In addition, according to the following detailed description, the present invention provides a system and mechanism for automatically transmitting values from data sources to a user interface and vice versa. In the following description, the term “data binding” means the process of associating data values with PI properties, transferring and updating data values, etc.

Иллюстративная вычислительная средаIllustrative Computing Environment

На фиг. 1 показано иллюстративное вычислительное устройство, которое можно использовать в иллюстративных реализациях настоящего изобретения. Согласно фиг.1 в каждой основной конфигурации вычислительное устройство 100 обычно содержит, по меньшей мере, один процессор 102 и системную память 104. В зависимости от конкретных конфигурации и типа вычислительного устройства 100 системная память 104 может представлять собой энергозависимое запоминающее устройство (например, ОЗУ), энергонезависимое запоминающее устройство (например, ПЗУ, флэш-память и т.д.) или какую-либо их комбинацию. В системной памяти 104 обычно размещаются операционная система 105, один или несколько программных модулей 106 и, в необязательном порядке, программные данные 107. В качестве примеров программных модулей 106 могут выступать приложение обозревателя, приложение финансового управления, текстовый редактор и т.д. Эта базовая конфигурация представлена на фиг. 1 компонентами, окруженными пунктирной линией 108.In FIG. 1 shows an illustrative computing device that can be used in illustrative implementations of the present invention. 1, in each basic configuration, computing device 100 typically comprises at least one processor 102 and system memory 104. Depending on the specific configuration and type of computing device 100, system memory 104 may be a volatile memory device (eg, RAM) non-volatile storage device (e.g., ROM, flash memory, etc.) or any combination thereof. System memory 104 typically houses the operating system 105, one or more program modules 106, and optionally program data 107. Examples of program modules 106 may include a browser application, a financial management application, a text editor, etc. This basic configuration is shown in FIG. 1 components surrounded by a dashed line 108.

Вычислительное устройство 100 может иметь дополнительные особенности или функции. Например, вычислительное устройство 100 может также включать в себя дополнительные запоминающие устройства со сменными и/или стационарными носителями, в качестве которых могут выступать магнитные диски, оптические диски или лента. Такие дополнительные запоминающие устройства представлены на фиг. 1 в виде запоминающего устройства 109 со сменным носителем и запоминающего устройства 110 со стационарным носителем. Компьютерные среды хранения данных могут включать в себя энергозависимые и энергонезависимые, сменные и стационарные среды хранения, реализующие любой способ и любую технологию хранения информации, как то: компьютерно-считываемых команд, структур данных, программных модулей или иных данных. Системная память 104, запоминающее устройство 109 со сменным носителем и запоминающее устройство 110 со стационарным носителем - все они являются примерами компьютерных сред хранения данных. Компьютерные среды хранения данных включают в себя, но без ограничения, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающие устройства на основе магнитных дисков или других магнитных носителей, или любую другую среду, которую можно использовать для хранения полезной информации и к которой можно осуществлять доступ посредством вычислительного устройства 100. Любая такая компьютерная среда хранения данных может входить в состав устройства 100. Вычислительное устройство 100 может также содержать устройство(а) 112 ввода, например, клавиатуру, мышь, перо, устройство голосового ввода, устройство тактильного ввода и т.д. Оно также может содержать устройство(а) 114 вывода, например, дисплей, громкоговорители, принтер и т.д. Эти устройства общеизвестны в технике и не нуждаются в дополнительном описании.Computing device 100 may have additional features or functions. For example, computing device 100 may also include additional storage devices with removable and / or stationary media, which can be magnetic disks, optical disks, or tape. Such additional storage devices are shown in FIG. 1 in the form of a storage device 109 with removable media and a storage device 110 with a stationary medium. Computer storage media can include volatile and non-volatile, removable and stationary storage media that implement any method and any technology for storing information, such as computer-readable instructions, data structures, program modules or other data. System memory 104, storage device 109 with removable media and storage device 110 with stationary media are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROMs, digital versatile disks (DVDs) or other optical storage devices, magnetic tapes, magnetic tape, storage devices based on magnetic disks or other magnetic media, or any other medium that can be used to store useful information and which can be accessed by computing device 100. Any such computer storage medium for data may be included in the device 100. The computing device 100 may also contain an input device (a) 112, for example, a keyboard, mouse, pen, voice input device, tactile input device, etc. It may also comprise an output device (a) 114, for example, a display, speakers, printer, etc. These devices are well known in the art and do not need additional description.

Вычислительное устройство 100 также может содержать средства связи 116, позволяющие устройству 100 осуществлять связь с другими вычислительными устройствами 118, например, по сети. Средства связи 116 являются примером сред связи. Среды связи обычно реализуют считываемые компьютером команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, например, сигнале несущей или ином транспортном механизме и включают в себя любые среды доставки данных. Термин «модулированный сигнал данных» означает сигнал, одна или несколько характеристик которого изменяется определенным образом, что позволяет кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные среды, например, проводную сеть или прямое проводное соединение, беспроводные среды, например, акустические, ВЧ, инфракрасные и другие беспроводные среды. Используемый здесь термин «считываемые компьютером среды» подразумевает как среды хранения данных, так и среды передачи данных.Computing device 100 may also include communication means 116, allowing device 100 to communicate with other computing devices 118, for example, over a network. Communications 116 are an example of communications media. Communication media typically implement computer-readable instructions, data structures, program modules or other data in a modulated data signal, such as a carrier signal or other transport mechanism, and include any data delivery medium. The term "modulated data signal" means a signal, one or more of whose characteristics changes in a certain way, which allows you to encode information in the signal. By way of example, but not limitation, communication media include wired media, such as a wired network or a direct wired connection, wireless media, such as acoustic, RF, infrared, and other wireless media. As used herein, the term “computer-readable media” refers to both storage media and data transmission media.

Иллюстративная реализацияIllustrative implementation

На фиг. 2 показана функциональная блок-схема варианта осуществления системы 200 управления свойствами пользовательского интерфейса с помощью данных согласно настоящему изобретению. Система 200 содержит приложение 202, платформу 220 и источник 230 данных. Приложение 202 может представлять собой одно из приложений 106 на вычислительном устройстве 100, показанном на фиг. 1. Приложение 202 включает в себя код (ниже именуемый логикой 204) для манипулирования значением данных (например, значением 238 данных источника). В общем случае, логика 204 осуществляет проверку правильности значений данных и обновляет значения данных. Значение данных (например, значение 238 данных) представляет содержимое свойства (т.е. свойства источника данных) элемента данных (например, элемента 232 данных). Элемент 232 данных размещен в источнике данных (например, источнике 230 данных). Каждый источник 230 данных может содержать несколько элементов данных, каждый из которых имеет одно или несколько свойств, в которых хранится значение данных источника. Логика 203 может манипулировать значениями данных из множественных источников данных. Источники данных могут включать в себя документ XML, объект, набор данных и т.п. Согласно нижеприведенному подробному описанию, каждое свойство элемента данных можно использовать для управления пользовательским интерфейсом (ПИ).In FIG. 2 is a functional block diagram of an embodiment of a system 200 for managing user interface properties using data according to the present invention. System 200 comprises an application 202, a platform 220, and a data source 230. Application 202 may be one of applications 106 on computing device 100 shown in FIG. 1. Application 202 includes code (hereinafter referred to as logic 204) for manipulating a data value (eg, source data value 238). In general, logic 204 verifies the validity of data values and updates data values. A data value (e.g., data value 238) represents the contents of a property (i.e., a property of a data source) of a data item (e.g., data item 232). Data element 232 is located in a data source (e.g., data source 230). Each data source 230 may contain several data elements, each of which has one or more properties in which the value of the source data is stored. Logic 203 may manipulate data values from multiple data sources. Data sources may include an XML document, an object, a data set, and the like. According to the following detailed description, each property of a data item can be used to control a user interface (UI).

Приложение 202 также включает в себя код (ниже именуемый пользовательским интерфейсом 206) для представления информации. Пользовательский интерфейс 206 включает в себя несколько элементов пользовательского интерфейса (например, элемент 208 ПИ). Каждый элемент 208 пользовательского интерфейса включает в себя одно или несколько свойств (например, свойства 210 и 212 ПИ), как то: отображаемый текст, цвет, шрифт, положение, размер и т.д. Затем, согласно нижеследующему подробному описанию, эти свойства 210 и 212 ПИ связывают с одним или несколькими значениями 238 и 242 данных, согласно настоящему изобретению. В общем случае, связывание осуществляется машиной («механизмом») 224 привязок, входящей в состав платформы 220. Платформа 220 представляет системный уровень служб, например операционную систему, виртуальную машину и т.п. Платформа 220 также содержит машину 222 свойств, которая отвечает за поддержание иерархической информации, относящейся к значениям 234 и 242 данных, и за обновление соответствующих свойств значениями данных. Хотя машина 224 привязок и машина 222 свойств показаны как раздельные компоненты, специалистам в данной области очевидно, что функции каждой из них, можно объединить в одном компоненте, не выходя за рамки настоящего изобретения.Application 202 also includes code (hereinafter referred to as user interface 206) for presenting information. User interface 206 includes several user interface elements (e.g., UI element 208). Each user interface element 208 includes one or more properties (e.g., PI properties 210 and 212), such as: display text, color, font, position, size, etc. Then, according to the following detailed description, these PI properties 210 and 212 are associated with one or more data values 238 and 242 according to the present invention. In general, the binding is done by the machine ("mechanism") 224 bindings, which is part of the platform 220. Platform 220 represents the system level of services, such as the operating system, virtual machine, etc. The platform 220 also includes a property machine 222, which is responsible for maintaining hierarchical information related to data values 234 and 242, and for updating the corresponding properties with data values. Although the binding machine 224 and the property machine 222 are shown as separate components, it will be apparent to those skilled in the art that the functions of each of them can be combined into a single component without departing from the scope of the present invention.

Связывание (т.е. привязки) значений 238 и 242 данных с их свойствами 210 и 212 ПИ представлено на фиг. 2 пунктирными линиями от значения данных к свойству ПИ (ниже именуемыми привязками 226 и 228). В нижеследующем описании термин «значение данных» может использоваться наравне с термином «значение данных источника». Аналогично, термин «свойство ПИ» может использоваться наравне с термином «целевое свойство». Эти привязки 226 и 228 позволяют автоматически задавать динамические свойства (т.е. целевые свойства) на основании значений данных (т.е. значений данных источника), например, на основании свойств произвольных объектов. Эти привязки могут быть динамическими, что позволяет соответствующему целевому свойству автоматически обновляться, чтобы отражать изменения значения данных источника.The binding (i.e., binding) of the data values 238 and 242 to their PI properties 210 and 212 is shown in FIG. 2 by dashed lines from the data value to the PI property (hereinafter referred to as bindings 226 and 228). In the following description, the term “data value” may be used along with the term “source data value”. Similarly, the term “PI property” can be used along with the term “target property”. These bindings 226 and 228 allow you to automatically set dynamic properties (i.e., target properties) based on data values (i.e., source data values), for example, based on properties of arbitrary objects. These bindings can be dynamic, which allows the corresponding target property to be automatically updated to reflect changes in the value of the source data.

Для обеспечения этой возможности автоматического обновления, настоящее изобретение дополнительно предусматривает механизм извещения (например, представленный на фиг. 2 блоками 236 и 240 извещения и стрелками от блоков извещения к платформе 220). Каждый элемент 232 и 234 данных имеет соответствующий этап 236 и 240 извещения соответственно. Механизм извещения отвечает за информирование системы об изменении значения данных источника и о возможности передачи значения данных на целевое свойство (например, свойство ПИ).To provide this automatic update capability, the present invention further provides a notification mechanism (for example, as shown in FIG. 2 by notification units 236 and 240 and arrows from the notification units to platform 220). Each data element 232 and 234 has a corresponding notification step 236 and 240, respectively. The notification mechanism is responsible for informing the system about a change in the value of the source data and about the possibility of transmitting the data value to the target property (for example, the PI property).

При создании привязок 226 и 228, например, посредством разметки, кода и т.п. машина 234 привязок создает объект привязки (например, объекты 250 и 252 привязки), связанные с привязкой. Например, объект 252 привязки может представлять привязку 228 в машине 224 привязок. Каждый объект привязки включает в себя несколько свойств (например, свойства 260-272 привязки). Каждое из этих свойств 260-272 привязки можно задавать программно. Ниже рассмотрено каждое из этих свойств, и на фиг. 4 показан иллюстративный код для активации привязки, задающий некоторые из этих свойств.When creating bindings 226 and 228, for example, through markup, code, etc. binding machine 234 creates a binding object (e.g., binding objects 250 and 252) associated with the binding. For example, the binding object 252 may represent the binding 228 in the binding machine 224. Each binding object includes several properties (for example, properties 260-272 of the binding). Each of these binding properties 260-272 can be set programmatically. Each of these properties is discussed below, and in FIG. 4 illustrates an example binding activation code defining some of these properties.

Одно из свойств привязки (ниже именуемое «путь» 260) идентифицирует способ, как найти значение данных источника (через объект источника). Путь 260 может ссылаться на свойство, подсвойство или индексатор на объекте источника, столбец в ADO (ActiveX Data Objects), XPath на XML, и т.п. Альтернативно, путь может ссылаться на отражение или путь ADO.One of the binding properties (hereinafter referred to as the "path" 260) identifies a way to find the value of the source data (through the source object). Path 260 may refer to a property, sub-property, or indexer on the source object, a column in ADO (ActiveX Data Objects), XPath in XML, and so on. Alternatively, the path may refer to a reflection or ADO path.

Другое свойство привязки (ниже именуемое «тип привязки» 264) задает тип для привязок 226 и 228. В одном варианте осуществления, «тип привязки» может принимать значения «односторонняя», «двусторонняя» и «одноразовая». В порядке иллюстрации, привязка 226 представляет собой «двустороннюю» привязку, а привязка 228 представляет собой «одностороннюю» привязку. Один из этих типов привязки является заданным по умолчанию. В одном варианте осуществления типом привязки, принятым по умолчанию, является «двусторонняя» привязка.Another binding property (hereinafter referred to as “binding type” 264) sets the type for bindings 226 and 228. In one embodiment, the “binding type” can be one-way, two-way, and one-time. By way of illustration, anchor 226 is a “two-way” anchor, and anchor 228 is a “one-way” anchor. One of these binding types is the default. In one embodiment, the default binding type is two-way binding.

Когда «тип привязки» 262 имеет значение «односторонняя», машина 224 привязок должна обновлять целевое свойство (например, свойство 210 ПИ) при каждом изменении связанного значения данных источника. Односторонний тип привязки полезен для привязывания значения данных к нередактируемому свойству ПИ, например, цвету текста, фону текста и т.д. Использование одностороннего типа привязки позволяет избежать накладных расходов двустороннего типа привязки, который описан ниже. Это снижение накладных затрат наиболее заметно при отслеживании изменений свойств ПИ, относящихся к содержимому размещения (на экране). Для этих свойств ПИ динамические свойства каждого потомка свойства ПИ подлежат отслеживанию на предмет изменений свойства ПИ. Односторонний тип привязки также может быть полезен, когда свойство ПИ изменяется только для показа другой детали представления.When the “binding type” 262 is set to “one-way,” the binding machine 224 must update the target property (eg, PI property 210) each time the associated value of the source data changes. A one-way type of binding is useful for binding a data value to an uneditable PI property, such as text color, text background, etc. Using a one-way binding type avoids the overhead of a two-way binding type, which is described below. This reduction in overhead costs is most noticeable when tracking changes in the properties of PI related to the content of the placement (on the screen). For these PI properties, the dynamic properties of each descendant of the PI property must be monitored for changes in the PI property. A one-way binding type can also be useful when the PI property is changed only to show another detail of the view.

Когда «тип привязки» 262 имеет значение «двусторонняя», машина 224 привязок должна обновлять целевое свойство при каждом изменении значения данных источника, и наоборот. «Двусторонняя» привязка особенно полезна при привязке данных к окну редактирования, когда любые изменения, внесенные пользователем в окне редактирования, нужно распространить на значение данных источника. Другой сценарий для двусторонней привязки состоит в том, что за поле данных источника отвечает другое приложение, и эти изменения отражаются в окне редактирования.When the “binding type” 262 is set to “two-way,” the binding machine 224 must update the target property each time the value of the source data changes, and vice versa. Two-way binding is especially useful when binding data to the editing window, when any changes made by the user in the editing window need to be extended to the value of the source data. Another scenario for two-way binding is that another application is responsible for the source data field, and these changes are reflected in the editing window.

Когда «тип привязки» 262 имеет значение «одноразовая», машина 224 привязок должна инициализировать целевое свойство один раз и затем оставлять его без изменений даже при изменении соответствующего значения данных источника. Одноразовый тип привязки полезен, когда какое-либо целевое свойство необходимо инициализировать неким значением из поля источника и контекст данных заранее неизвестен. Кроме того, одноразовый тип привязки полезен для использования значений данных источника в режиме «только чтение», если они не подлежат изменению. Если источник данных не поддерживает механизм извещения свойств, отвечающий настоящему изобретению (например, интерфейс IPropertyChange), то целевое свойство, заданное как «одностороннее», будет обновляться аналогично привязке, «тип привязки» которой задан как «одноразовая».When the “binding type” 262 is “one-time”, the binding machine 224 must initialize the target property once and then leave it unchanged even when the corresponding source data value changes. A one-time type of binding is useful when any target property needs to be initialized with a certain value from the source field and the data context is not known in advance. In addition, a one-time type of binding is useful for using source data values in read-only mode if they cannot be changed. If the data source does not support the property notification mechanism of the present invention (for example, the IPropertyChange interface), then the target property specified as “one-way” will be updated in the same way as the binding, the “binding type” of which is specified as “one-time”.

Еще одно свойство привязки (ниже именуемое «тип обновления» 264) задает тип обновления для случая, когда «тип привязки» 262 задан как «двусторонняя». Обычно, двусторонние привязки отслеживают изменения целевого свойства и распространяют эти изменения обратно на значение данных источника. Этот процесс называется обновлением источника. Обычно, обновление желательно при любых изменениях целевого свойства. Однако в некоторых случаях обновление после каждого нажатия клавиши приводит к расходованию квантов вычислений и не дает пользователю возможности исправлять опечатки и т.п. «Тип обновления» 264 позволяет пользователю указывать, когда нужно производить обновление. В одном варианте осуществления, «тип обновления» 264 может иметь значение «немедленно», «при потере фокусировки» и «явно». Обновление «немедленно» означает, что машина привязок должна обновлять значение данных источника после каждого изменения целевого свойства. Обновление «при потере фокусировки» означает, что машина привязок должна обновлять значение данных источника после того, как целевой элемент потерял «клавиатурную фокусировку». Обновление «явно» означает, что машина привязок должна обновлять значение данных источника только тогда, когда приложение в явном виде запрашивает обновление. Обычно этот явный запрос осуществляется посредством метода. Хотя этот метод можно вызывать для любого значения «типа обновления» 264, метод полезен, когда «тип обновления» имеет значение «явно». Вот один пример метода:Another binding property (hereinafter referred to as “update type” 264) sets the update type for the case when the “binding type” 262 is set to “two-way”. Typically, two-way bindings track changes to the target property and propagate those changes back to the value of the source data. This process is called updating the source. Typically, an update is desirable for any changes to the target property. However, in some cases, updating after each keystroke leads to the expenditure of quanta of calculations and does not allow the user to correct typos, etc. The “Update Type” 264 allows the user to indicate when to update. In one embodiment, the “update type” 264 may be “immediately”, “when the focus is lost”, and “explicitly”. Updating “immediately” means that the binding machine must update the value of the source data after each change to the target property. The “in case of focus loss” update means that the binding machine should update the value of the source data after the target element has lost “keyboard focus”. Updating “explicitly” means that the binding machine should only update the value of the source data when the application explicitly requests the update. Typically, this explicit request is made through a method. Although this method can be called for any value of the "update type" 264, the method is useful when the "update type" is set to "explicitly". Here is one example method:

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

Еще одно свойство привязки (ниже именуемое «источник» 266) идентифицирует элемент данных источника для привязки. В целом, согласно показанному на фиг. 4 и описанному в связи с ней, свойство «источник» 266 может быть задано программно или посредством разметки. При программном задании разработчик обеспечивает объектную ссылку (objectref) на объект, который привязка должна использовать как элемент данных источника. В целом, согласно подробно описанному в связи с фиг. 4, существуют различные методы задания свойства источника посредством разметки.Another binding property (hereinafter referred to as “source” 266) identifies the source data element for the binding. In general, as shown in FIG. 4 and described in connection with it, the property "source" 266 can be set programmatically or by markup. When programming, the developer provides an object link (objectref) to the object that the binding should use as an element of the source data. In general, as described in detail in connection with FIG. 4, there are various methods for setting a source property through markup.

Еще одно свойство привязки (ниже именуемое «преобразователь» 268) принимает ссылку на класс. Ссылку на класс можно задавать, используя <Namespace>, <Class>, <Assembly>. Машина 224 привязок вызывает заданную ссылку на класс, чтобы преобразовать значение данных источника в формат, принимаемый целевым свойством. Метод в ссылке на класс вызывает это преобразование, представленное на фиг. 2 как преобразователь 244. Ссылка на класс может также задавать обратное преобразование (не показано) для преобразования целевого свойства в формат, принимаемый значением данных источника. Преобразование 244 может обеспечивать семантику ПИ или быть преобразователем заказного типа.Another binding property (hereinafter referred to as a “converter” 268) accepts a class reference. The class reference can be set using <Namespace>, <Class>, <Assembly>. The binding machine 224 calls a predetermined class reference to convert the value of the source data to the format accepted by the target property. The method in the class reference invokes this transformation, shown in FIG. 2 as a transformer 244. A class reference can also specify an inverse transform (not shown) to convert the target property into the format accepted by the value of the source data. Transformation 244 may provide the semantics of PI or be a custom type converter.

Еще одно свойство привязки (ниже именуемое «культура» 270) указывает, как следует обрабатывать значение данных источника до/после преобразования значения данных источника. «Культура» 270 действует совместно с преобразователем 268, позволяя разработчикам устанавливать правила преобразования значений данных источника. Например, «культура» может задавать конкретный формат чисел, дат и т.д. В одном варианте осуществления, культура 270 принимает значение типа CultureInfo. Разработчик имеет возможность использовать правила, заданные «культурой» 270 при реализации преобразования.Another binding property (hereinafter referred to as “culture” 270) indicates how to process the value of the source data before / after converting the value of the source data. Culture 270 acts in conjunction with transducer 268, allowing developers to establish rules for converting source data values. For example, “culture” may specify a specific format for numbers, dates, etc. In one embodiment, culture 270 assumes a value of type CultureInfo. The developer is able to use the rules defined by the "culture" 270 when implementing the transformation.

Еще одно свойство привязки (ниже именуемое «флаги привязки» 272) обеспечивает механизм приема событий, сигнализирующих о переносе данных. Поскольку вышеописанный способ привязки данных является асинхронным, «флаги привязки» 272 позволяют разработчику знать, когда цель обновилась новым значением. Для использования этого механизма «флаги привязки» 272 устанавливают равными значению «извещать при переносе». Затем, для события регистрируется обработчик любым обычным способом. Ниже приведен пример использования этого механизма:Another binding property (hereinafter referred to as “binding flags” 272) provides a mechanism for receiving events that signal data transfer. Because the above data binding method is asynchronous, the “binding flags" 272 let the developer know when the target has been updated with the new value. To use this mechanism, “anchor flags” 272 are set to the value “notify upon transfer”. Then, for the event, a handler is registered in any usual way. The following is an example of using this mechanism:

Public static void main()Public static void main ()

{{

//Добавить обработчик// Add handler

elem.AddAttachedHandler(Binding.DataTranferEvent,elem.AddAttachedHandler (Binding.DataTranferEvent,

newDataTranferEventHandler(OnDataTransfer),newDataTranferEventHandler (OnDataTransfer),

RoutedEventArgs.EventStage.Direct);RoutedEventArgs.EventStage.Direct);

//Обработчик событий// event handler

private static void OnDataTransfer(Element e,private static void OnDataTransfer (Element e,

DataTransferEventArgs args)DataTransferEventArgs args)

{{

DynamicProperty DP=args.DP;DynamicProperty DP = args.DP;

v=e.GetValue(DP);v = e.GetValue (DP);

DoSomething(v);DoSomething (v);

}}

source.field="new value";source.field = "new value";

}.}.

Согласно вышеприведенному иллюстративному коду, при наступлении события OnDataTransfer разработчик узнает об обновлении динамического свойства. Таким образом, разработчик может использовать целевое значение для дальнейшей обработки.According to the above illustrative code, when an OnDataTransfer event occurs, the developer learns about updating the dynamic property. Thus, the developer can use the target value for further processing.

На фиг. 3 показана логическая последовательность операций механизма привязки согласно одному варианту осуществления настоящего изобретения. В целом, механизм привязки осуществляет действия по установлению привязки (этапы 302-306), а затем осуществляет действия (этапы 310-338), относящиеся к изменениям целевого свойства или значения данных источника, указанным в привязке. Обработка продолжается на этапе 302.In FIG. 3 is a flow chart of a binding mechanism according to one embodiment of the present invention. In general, the binding mechanism takes actions to establish the binding (steps 302-306), and then takes actions (steps 310-338) related to changes in the target property or value of the source data specified in the binding. Processing continues at block 302.

Этап 302 обозначает создание объекта привязки на основании аргументов, заданных при создании. В целом, в качестве аргумента при создании можно задавать каждое свойство (т.е. свойства 260-272, показанные на фиг. 2) для объекта 252 привязки. Привязку можно создавать посредством разметки, программно и т.п. На фиг. 4 показаны иллюстративные синтаксисы для создания привязки и задания свойств 260-272. Каждый способ создания предусматривает задание элемента данных источника, пути к значению данных в элементе данных источника, целевого элемента ПИ и целевого динамического свойства на элементе ПИ. Хотя это и не показано в данной последовательности операций, свойства объекта привязки можно динамически изменять в ходе работы, например, с использованием программных интерфейсов приложения (API). Затем обработка переходит к этапу 304.Step 302 denotes the creation of the binding object based on the arguments specified at creation. In general, each property (i.e., properties 260-272 shown in Fig. 2) for the binding object 252 can be set as an argument during creation. A binding can be created using markup, software, etc. In FIG. 4 illustrates illustrative syntaxes for creating bindings and setting properties 260-272. Each creation method involves setting the source data element, the path to the data value in the source data element, the target PI element, and the target dynamic property on the PI element. Although not shown in this sequence of operations, the properties of the binding object can be dynamically changed during operation, for example, using application programming interfaces (APIs). Processing then proceeds to step 304.

Этап 304 обозначает активацию привязки. В одном варианте осуществления, привязка может активироваться автоматически после того, как машина привязок извещает о наличии достаточного контекста для привязки, например, о наличии объекта источника, готовности целевого элемента к отображению (на экране) и т.д. Машина привязок отвечает за распознавание активации привязки. Затем обработка переходит к этапу 306.Step 304 indicates the activation of the binding. In one embodiment, the binding can be activated automatically after the binding machine notifies that there is sufficient context for the binding, for example, the presence of a source object, the readiness of the target element for display (on the screen), etc. The binding machine is responsible for recognizing binding activation. Processing then proceeds to block 306.

Этап 306 обозначает нахождение значения указанного свойства источника. В одном варианте осуществления, для отыскания значения используется отражение. «Отражение» является общим механизмом, позволяющим вызывающей стороне получать информацию о запрашиваемом объекте. Информация включает в себя поддерживаемые объекты, «публичные» (открытые) свойства и т.п. В другом варианте осуществления, когда элементом данных является коллекция (набор), машина привязок осуществляет ряд эвристик, чтобы определить, использовать ли текущую запись или сам объект данных (коллекцию). Первая эвристика применяется, когда привязка ссылается на свойство или индексатор. В этом случае используется соответствующее(ий) свойство или индексатор на объекте коллекции, если такое(й) свойство или индексатор существует. Альтернативно, текущая запись коллекции используется в качестве элемента данных. Другая эвристика применяется в отсутствие свойства и индексатора. В этом случае для целевого свойства используется объект коллекции, до тех пор пока объект коллекции действителен. В противном случае используется текущая запись. Перед переходом к этапу 308 к значению применяется преобразование, если привязка задает преобразование (этап 307). Применение преобразования подробно описано ниже в связи с блоком 316. Затем обработка переходит к этапу 308.Step 306 denotes finding the value of the specified source property. In one embodiment, reflection is used to find the value. “Reflection” is a general mechanism that allows the caller to receive information about the requested object. Information includes supported objects, “public” (open) properties, etc. In another embodiment, when the data element is a collection (set), the binding engine performs a series of heuristics to determine whether to use the current record or the data object (collection) itself. The first heuristic is applied when the binding refers to a property or indexer. In this case, the corresponding property (s) or indexer on the collection object is used, if such property (s) or indexer exists. Alternatively, the current collection record is used as a data item. Other heuristics are applied in the absence of property and indexer. In this case, the collection object is used for the target property as long as the collection object is valid. Otherwise, the current record is used. Before proceeding to step 308, a transformation is applied to the value if the binding defines the transformation (step 307). The application of the transform is described in detail below in connection with block 316. Then, the processing proceeds to step 308.

Этап 308 обозначает назначение (присвоение) найденного значения целевому свойству. В одном варианте осуществления машина свойств, отвечающая за поддержание иерархии свойств, может присваивать значение. В другом варианте осуществления преобразование, заданное при создании привязки, может быть вызвано для преобразования значения, до присвоения значения целевому свойству. Согласно дополнительному усовершенствованию, машина свойств может пометить свойство как имеющее новое значение. После выполнения этапов 302-308, машина привязок готова к обновлению целевых свойств и значений данных источника по мере необходимости. В общем случае механизм привязки является асинхронным.Step 308 denotes the purpose (assignment) of the found value to the target property. In one embodiment, a property machine responsible for maintaining a hierarchy of properties can assign a value. In another embodiment, the transformation specified when the binding was created can be called to convert the value before assigning the value to the target property. According to a further refinement, a property machine can mark a property as having a new value. After completing steps 302-308, the binding machine is ready to update the target properties and values of the source data as necessary. In general, the binding mechanism is asynchronous.

Поэтому, после этапа 308 обработка идет двумя асинхронными путями. Первый путь (этапы 310-318) связан с обновлением целевого свойства, а второй путь (этапы 330-338) связан с обновлением значения данных источника. Ниже описан каждый из этих путей. Сначала опишем путь, отвечающий за обновление целевого свойства.Therefore, after step 308, processing proceeds in two asynchronous paths. The first path (steps 310-318) is associated with updating the target property, and the second path (steps 330-338) is associated with updating the source data value. Each of these paths is described below. First, we describe the path responsible for updating the target property.

На этапе 310 принятия решения машина привязок определяет, имеет ли привязка, связанная со значением данных источника и целевым свойством, одноразовый тип привязки. Если «тип привязки» имеет значение «одноразовая», то обработка этой привязки завершается и процесс заканчивается. Специалисту в данной области очевидно, что, если «тип привязки» имеет значение «одноразовая», то машина привязок не отслеживает события изменения свойств источника. Таким образом, на практике, логика в машине привязок не обязана выполнять проверку, указанную этапом 310. Кроме того, если элемент данных не реализует IPropertyChange, то обработка завершается. Если же «тип привязки» не имеет значение «одноразовая», то обработка переходит к этапу 312.At decision block 310, the binding machine determines whether the binding associated with the source data value and the target property has a one-time binding type. If the "type of binding" has the value "one-time", then the processing of this binding ends and the process ends. It will be apparent to those skilled in the art that if the “binding type” is “one-time”, then the binding machine does not track events that change source properties. Thus, in practice, the logic in the binding machine is not required to perform the verification indicated by step 310. In addition, if the data element does not implement IPropertyChange, then the processing is completed. If the “binding type” does not have a “one-time” value, then processing proceeds to step 312.

На этапе 312 машина привязок отслеживает извещения, связанные с привязками. Поскольку «привязка данных» напрямую не обновляет цель значением данных источника, настоящее изобретение реализует механизм извещения. Механизмы извещения, например извещения об изменении свойств и извещения "CurrentChanged" вида коллекции и т.п., известны в технике и не нуждаются в дальнейшем обсуждении. Извещения обусловлены разными действиями, например, изменением значения данных, навигацией по странице, отключением, изменением нужной записи в коллекции данных и т.п. Поскольку настоящее изобретение предусматривает обновление при изменении нужной записи в коллекции данных, настоящее изобретение обеспечивает удобный механизм дополнительного разъединения пользовательского интерфейса и логики. Например, согласно настоящему изобретению, разработчику нужно только написать код в логике, чтобы указать, как переходить к следующей нужной записи в коллекции данных. Когда происходит изменение, машина привязок, согласно настоящему изобретению, обновляет пользовательский интерфейс в соответствии с уже заданными привязками. Согласно вышеизложенному, это разъединение пользовательского интерфейса и логики обеспечивает более устойчивое и более просто поддерживаемое приложение, чем «переплетенные» пользовательский интерфейс и логика.At 312, the binding machine monitors the notifications associated with the bindings. Since “data binding” does not directly update the target with the value of the source data, the present invention implements a notification mechanism. Notification mechanisms, for example, notifications of changes in properties and notifications of "CurrentChanged" type of collection, etc., are known in the art and do not need further discussion. Notifications are caused by various actions, for example, changing the data value, navigating the page, turning it off, changing the desired record in the data collection, etc. Since the present invention provides for updating when changing the desired record in the data collection, the present invention provides a convenient mechanism for additional separation of the user interface and logic. For example, according to the present invention, a developer only needs to write code in the logic to indicate how to proceed to the next desired record in the data collection. When a change occurs, the binding machine according to the present invention updates the user interface in accordance with already defined bindings. According to the above, this separation of the user interface and logic provides a more stable and simpler supported application than the "intertwined" user interface and logic.

Нижеследующий код является одной иллюстративной реализацией механизма извещения. Хотя представленный ниже иллюстративный код написан на C#, специалистам в данной области очевидно, что для реализации механизма извещения можно использовать различные языки и синтаксис. Для любой такой реализации, интерфейс задается для использования каждым элементом данных. Каждый элемент данных наследует этот интерфейс в целях реализации динамического обновления.The following code is one illustrative implementation of the notification mechanism. Although the illustrative code below is written in C #, it will be apparent to those skilled in the art that various languages and syntax can be used to implement the notification mechanism. For any such implementation, an interface is specified for use by each data item. Each data item inherits this interface in order to implement dynamic updates.

public interface IPropertyChangepublic interface IPropertyChange

{{

event PropertyChangedEventHandler PropertyChanged;event PropertyChangedEventHandler PropertyChanged;

}}

Затем задают обработчик событий и его аргументы.Then the event handler and its arguments are specified.

public delegate void PropertyChangedEventHandler(object sender,public delegate void PropertyChangedEventHandler (object sender,

PropertyChangedEventArgs e);PropertyChangedEventArgs e);

public class PropertyChangedEventArgs: EventArgspublic class PropertyChangedEventArgs: EventArgs

{{

public virtual string PropertyName { get;}public virtual string PropertyName {get;}

}.}.

Класс PropertyChangedEventArgs содержит одно свойство с возможностью только чтения, названное PropertyName, имеющее тип «строка». Свойство PropertyName содержит имя свойства, которое изменилось. Затем, каждый элемент данных источника реализует этот интерфейс, вызывая делегат PropertyChanged всякий раз при изменении одного из его свойств. Ниже приведен иллюстративный пример реализации объекта источника (например, элемента 232 данных) согласно варианту осуществления механизма извещения.The PropertyChangedEventArgs class contains a single read-only property called PropertyName, which is of the string type. The PropertyName property contains the name of the property that has changed. Then, each source data element implements this interface by invoking the PropertyChanged delegate whenever one of its properties changes. The following is an illustrative example implementation of a source object (eg, data element 232) according to an embodiment of a notification mechanism.

public class myClass: IPropertyChangepublic class myClass: IPropertyChange

{{

private string foo = "Hello World";private string foo = "Hello World";

public string Foopublic string foo

{{

get { return foo; }get {return foo; }

set { if(foo != value)set {if (foo! = value)

{{

foo = value;foo = value;

NotifyPropertyChanged("foo");NotifyPropertyChanged ("foo");

}}

}}

public event PropertyChangedEventHandler Property Changed;public event PropertyChangedEventHandler Property Changed;

private void NotifyPropertyChanged(string propName)private void NotifyPropertyChanged (string propName)

{{

PropertyChanged(this, newPropertyChanged (this, new

PropertyChangedEventArgs(propName));PropertyChangedEventArgs (propName));

}}

}.}.

Согласно вышеприведенному иллюстративному коду, метод 'set' для свойства 'foo' определяет, отличается ли новое значение от старого значения. Если значения различаются, вызывается обработчик. Для получения PropertyInfo осуществляется отражение. Согласно дополнительному усовершенствованию, машина привязок может кэшировать тип свойства после того, как оно получено посредством отражения. Таким образом, отражение осуществляется однократно, а не каждый раз при получении извещения для свойства. Согласно другому усовершенствованию, в аргументах можно передавать пустую строку, чтобы сигнализировать, что все привязки к каждому из значений данных элемента данных следует обновить. Это может иметь место, когда объект источника не располагает информацией о том, какие свойства изменились, и поэтому желательно обновить каждую привязку. После того, как машина привязок получает извещение об изменении значения данных источника, обработка переходит к этапу 314 принятия решения.According to the above illustrative code, the 'set' method for the 'foo' property determines whether the new value is different from the old value. If the values differ, a handler is called. Reflection is done to get PropertyInfo. According to a further refinement, the binding machine can cache the type of property after it is obtained by reflection. Thus, reflection is carried out once, and not every time a notification is received for a property. According to another improvement, an empty string can be passed in the arguments to signal that all bindings to each of the data values of the data item should be updated. This can occur when the source object does not have information about which properties have changed, and therefore it is advisable to update each binding. After the binding machine receives a notification of a change in the value of the source data, processing proceeds to decision block 314.

Этап 314 принятия решения обозначает выяснение, задано ли в привязке, связанной с измененным значением данных источника, преобразование для привязки. Если в привязке не задано преобразование, то обработка переходит к этапу 318. Если же в привязке задано преобразование, то обработка переходит к этапу 316.Decision step 314 indicates determining whether a transformation for the binding is specified in the binding associated with the changed value of the source data. If no transformation is specified in the binding, then processing proceeds to step 318. If, however, a transformation is specified in the binding, processing proceeds to step 316.

Этап 316 обозначает выполнение преобразования, заданного в привязке. В одном варианте осуществления, преобразователь 268 представляет собой описанный ниже объект:Step 316 indicates the execution of the transformation specified in the binding. In one embodiment, converter 268 is an object as described below:

public interface IDataTransformerpublic interface IDataTransformer

{{

public object Transform(object o, DynamicProperty dp,public object Transform (object o, DynamicProperty dp,

CultureInfo c) {;}CultureInfo c) {;}

}.}.

Для вышеописанного интерфейса, «о» обозначает значение источника, «dp» обозначает целевое динамическое свойство, и «с» обозначает культуру для использования в ходе преобразования. Метод Transform() преобразует значение «о» источника в объект, пригодный для присвоения динамическому свойству типа «dp». Метод Transform() вызывается при распространении значения данных от источника привязки на целевое свойство. Если метод Transform() возвращает значение null, то машине привязок предписывается остановить распространение значений.For the above interface, “o” indicates the source value, “dp” indicates the target dynamic property, and “c” indicates the culture to use during the conversion. The Transform () method converts the “o” value of the source into an object suitable for assigning to the dynamic property of the “dp” type. The Transform () method is called when the data value from the binding source is propagated to the target property. If the Transform () method returns null, then the binding machine is instructed to stop the spread of values.

Преобразователь также можно использовать для управления другими свойствами ПИ, например, шириной, высотой, шрифтом, расположением (x,y) и т.п. на основании соответствующего значения данных источника, заданного в привязке. Преобразователи обеспечивают возможность осуществлять логику в отношении значений данных, чтобы показывать данные несколькими способами. Согласно дополнительному усовершенствованию в ходе преобразования можно применять культуру, согласно указанному в привязке. Затем обработка переходит к этапу 318.The converter can also be used to control other properties of the PI, for example, width, height, font, location (x, y), etc. based on the corresponding source data value specified in the binding. Converters provide the ability to implement logic on data values in order to display data in several ways. According to a further improvement, a culture can be applied during the conversion as indicated in the binding. Processing then proceeds to step 318.

Этап 318 обозначает обновление целевого свойства. В одном варианте осуществления машина свойств присваивает значение целевому свойству. Кроме того, целевое свойство можно пометить как имеющее новое значение. Затем обработка может перейти к этапу 312 для отслеживания следующего извещения об изменении свойства, связанного с привязкой. Когда приложение заканчивает работу, или привязка иным образом завершается, обработка заканчивается.Step 318 denotes updating the target property. In one embodiment, the property machine assigns a value to the target property. In addition, the target property can be marked as having a new value. Processing may then proceed to block 312 to track the next property change notification associated with the binding. When the application terminates, or the binding otherwise terminates, processing ends.

Согласно отмеченному выше, после этапа 308, обработка может пойти по второму пути. Таким образом, после этапа 308, обработка переходит к этапу 330 принятия решения. Согласно отмеченному выше в отношении этапа 310 принятия решения, логика в машине привязок не всегда осуществляет проверку «типа привязки» на блоке 310 принятия решения, поэтому, если машина привязок не получает предписания отслеживать извещения о создании привязки, процесс не проходит второй путь. Однако для упрощения описания хода процесса, показан этап принятия решения, отражающий «тип привязки». Таким образом, этап 330 принятия решения обозначает выяснение, имеет ли привязка в качестве «типа привязки» значение «двусторонняя». Согласно рассмотренному ранее, двусторонняя привязка позволяет распространять изменения целевого свойства на значение данных источника. Если «тип привязки» для привязки не имеет значение «двусторонняя», то обработка заканчивается. Если же привязка имеет двусторонний тип привязки, то обработка переходит к этапу 332.As noted above, after step 308, the processing may go along the second path. Thus, after step 308, the processing proceeds to decision step 330. According to the above with respect to decision block 310, the logic in the binding machine does not always check the “binding type” on the decision block 310, therefore, if the binding machine does not receive an instruction to track notifications about the creation of the binding, the process does not go the second way. However, to simplify the description of the process, a decision-making phase is shown, which reflects the “type of binding”. Thus, decision block 330 indicates whether the binding is “two-way” as the “binding type”. As previously discussed, two-way binding allows you to propagate changes in the target property to the value of the source data. If the “binding type” for the binding does not have a “two-way” value, then the processing ends. If the binding has a two-way binding type, then processing proceeds to block 332.

На блоке 332 машина привязок выявляет определенные действия, которые запускают обновление значения данных источника. В случае запуска, обработка переходит к этапу 334 принятия решения.At block 332, the binding machine detects certain actions that trigger updating the source data value. In the case of a start, processing proceeds to decision block 334.

Этап 334 принятия решения обозначает выяснение, задано ли в привязке обратное преобразование для привязки. Если привязка не задает обратное преобразование, то обработка переходит к этапу 338. Если же привязка задает обратное преобразование, то обработка переходит к этапу 336.Step 334 of the decision indicates the determination of whether the binding specified inverse transformation for the binding. If the binding does not specify an inverse transformation, then processing proceeds to step 338. If the binding specifies an inverse transformation, processing proceeds to step 336.

Этап 336 обозначает применение обратного преобразования к свойству источника. В одном варианте осуществления, обратный преобразователь представляет собой описанный ниже объект:Step 336 denotes applying the inverse transform to the source property. In one embodiment, the inverter is the following object:

public interface IDataTransformerpublic interface IDataTransformer

{{

public object InverseTransform(object o, PropertyInfopublic object InverseTransform (object o, PropertyInfo

pinfo.CultureInfo c){;}pinfo.CultureInfo c) {;}

}.}.

Для вышеописанного интерфейса «о» обозначает значение источника, «с» обозначает культуру для использования в ходе преобразования, и «pinfo» обозначает PropertyInfo целевого свойства. Метод InverseTransform() преобразует значение «о» источника в объект, пригодный для присвоения свойству информации типа. Этот метод вызывается при передаче значения от цели привязки на источник. Если метод InverseTransform() возвращает значение null, то машина привязок не передает значение. После выполнения InverseTransform, обработка переходит к этапу 338.For the above interface, “o” indicates the value of the source, “c” indicates the culture to use during the conversion, and “pinfo” indicates the PropertyInfo of the target property. The InverseTransform () method converts the value “o” of the source into an object suitable for assigning type information to the property. This method is called when a value is passed from the target to the source. If the InverseTransform () method returns null, then the binding machine does not pass the value. After performing InverseTransform, processing proceeds to block 338.

Этап 338 обозначает обновление свойства источника в соответствии с «типом обновления». Согласно описанному выше, «тип обновления» может иметь значения «немедленно», «при потере фокусировки», «явно» и другие. После обновления свойства источника обработка заканчивается.Step 338 denotes updating the source property in accordance with the “update type”. As described above, the "type of update" can have the meanings of "immediately", "when the focus is lost", "explicitly" and others. After updating the source property, processing ends.

На фиг. 4 показано несколько иллюстративных средств создания привязки. Средство 400-410 создания создает привязку посредством разметки. Средство 412 создания создает привязку посредством кода. Иллюстративные средства, показанные на фиг. 4, не являются единственно возможными. Можно использовать другие средства (синтаксис), не выходя за рамки объема настоящего изобретения.In FIG. 4 illustrates several illustrative binding tools. Creation tool 400-410 creates a binding through pegging. Creation tool 412 creates a binding through code. The illustrative means shown in FIG. 4 are not the only ones possible. You can use other tools (syntax), without going beyond the scope of the present invention.

Средство 400 создания содержит пару имя/значение DataContext [контекст данных] (ниже именуемую DataContext 422) и пару имя/значение Id [идентификатор] (ниже именуемую Id 420) для элемента 424. Поскольку средство 400 создания также содержит DataContext 422, то Id 420 является необязательной. Id 420 нужна, когда желательно сослаться на явный источник, например, с использованием ElementSource в разметке или IdObjectReg в коде. Оба эти варианта использования описаны ниже. DataContext 422 - это динамическое свойство, заданное (определенное) на элементе (например, элементе 424). Значение, связанное с DataContext 422, представляет элемент данных источника, принятый по умолчанию, и является наследуемым свойством. Машина привязок запрашивает DataContext 422 и использует DataContext 422 при создании элемента 424 и элементов-потомков (например, элемента 426 Button [кнопка]). Машина привязок также отслеживает изменения DataContext 422, что соответственно, запускает обновление. Таким образом, хотя это и не требуется, DataContext 422 обеспечивает удобный механизм установления области действия для всех свойств, связанных с общим элементом данных. Элементы-потомки могут иметь собственные DataContext, которые будут иметь приоритет над DataContext 422 родительского элемента. Привязка может подменять DataContext 422, обеспечивая Source [источник], не равный null, описанный ниже применительно к средству 402 создания.Creation tool 400 contains a DataContext name / value pair [data context] (hereinafter referred to as DataContext 422) and Id [identifier] name / value pair (hereinafter referred to as Id 420) for element 424. Since author 400 also contains DataContext 422, Id 420 is optional. Id 420 is needed when it is desirable to refer to an explicit source, for example, using ElementSource in markup or IdObjectReg in code. Both of these use cases are described below. DataContext 422 is a dynamic property defined (defined) on an element (e.g., element 424). The value associated with the DataContext 422 represents the default source data element and is an inherited property. The binding machine queries the DataContext 422 and uses the DataContext 422 when creating the 424 element and descendant elements (for example, the 426 Button [button]). The binding machine also tracks changes to the DataContext 422, which accordingly triggers the update. Thus, although not required, the DataContext 422 provides a convenient mechanism for setting the scope for all properties associated with a common data item. Descendant elements can have their own DataContext, which will take precedence over the DataContext 422 of the parent element. A binding can replace DataContext 422, providing a Source that is not null, described below in relation to the means of creation 402.

Элемент 426 Button проиллюстрирован с целевым свойством (например, Button.Text 428). Согласно настоящему изобретению, встретив «Data:Bind», машина привязок распознает, что привязка задана. Последующие пары имя/значение устанавливают свойства 260-272 привязки, указанные на фиг. 2. Специалистам в данной области очевидно, что элемент «Data:Bind» для сигнализации о привязке выбран произвольно, и можно использовать любое количество элементов, не выходя за рамки настоящего изобретения. Средство 400 создания представляет расширенный формат разметки.The Button element 426 is illustrated with a target property (e.g., Button.Text 428). According to the present invention, upon encountering “Data: Bind”, the binding machine recognizes that the binding has been set. Subsequent name / value pairs set the binding properties 260-272 indicated in FIG. 2. It will be apparent to those skilled in the art that the “Data: Bind” element for signaling a binding is arbitrarily selected, and any number of elements can be used without departing from the scope of the present invention. Creation tool 400 presents an advanced markup format.

Средство 402 создания представляет компактный формат разметки. Свойство ПИ (например, Button Text) представлен в более компактном виде. Опять же, «Data:Bind» используется как сигнал машине привязок о том, что далее следует привязка. Кроме того, пары имя/значение, следующие после Data:Bind, соответствуют нужным свойствам 260-272, описанным выше для объекта 250 привязки на фиг. 2. Например, пара имя/значение ElementSource (ниже именуемая ElementSource 434) соответствует источнику 266.Creation tool 402 presents a compact layout format. The PI property (for example, Button Text) is presented in a more compact form. Again, “Data: Bind” is used as a signal to the binding machine that the binding follows. In addition, the name / value pairs following Data: Bind correspond to the desired properties 260-272 described above for the binding object 250 in FIG. 2. For example, the ElementSource name / value pair (hereinafter referred to as ElementSource 434) corresponds to source 266.

В языке разметки имеются два метода задания свойства источника: ElementSource и DataSource. Если ни один из них не используется, то источнику присваивается значение null по умолчанию, что предписывает машине привязок после создания получить значение свойства DataContext элемента и использовать это значение в качестве объекта источника.The markup language has two methods for setting the source property: ElementSource and DataSource. If none of them is used, the source is set to null by default, which instructs the binding machine to obtain the value of the DataContext property of the element after creation and use this value as the source object.

Когда средство создания (например, средство 402 создания) задает ElementSource, машина привязок находит элемент, чей ИД указан свойством ElementSource. Затем, DataContext этого элемента используется в качестве объекта источника. Для задания источника данных можно использовать относительные имена пути, например, /Parent/Parent и /Previous/Previous. Когда машина привязок встречает /Parent, она ищет элемент, являющийся родителем по отношению к текущему элементу, в рамках иерархии объектов. Например, если элемент является заданием заказчика, то, задав /Parent, можно предписать машине привязок искать элемент, соответствующий заказчику текущего задания. Задавать /Parent полезно в случаях вложенного повторителя, когда желательно использовать значения от внешнего повторителя в пределах внутреннего повторителя. Задание /Previous предписывает машине привязок искать элемент, предшествующий текущему элементу в соответствии с «повторителем». Задавать /Previous полезно, когда желательно обращаться не только к текущему элементу, но и к элементу с номером «текущий-n», например, в реберных графах и т.п. Согласно настоящему изобретению, можно использовать последовательные /Previous и /Parent.When the authoring tool (for example, authoring tool 402) defines an ElementSource, the binding machine finds the element whose ID is specified by the ElementSource property. Then, the DataContext of this element is used as the source object. You can use relative path names to specify the data source, for example, / Parent / Parent and / Previous / Previous. When the binding machine encounters / Parent, it searches for the element that is the parent of the current element within the hierarchy of objects. For example, if the item is the customer’s job, then by specifying / Parent, you can instruct the binding machine to search for the item that matches the customer of the current job. Setting / Parent is useful in cases of a nested repeater when it is desirable to use values from an external repeater within the internal repeater. The / Previous task instructs the binding machine to look for an element preceding the current element in accordance with the “repeater”. Setting / Previous is useful when it is desirable to refer not only to the current element, but also to the element with the number “current-n”, for example, in edge graphs, etc. According to the present invention, sequential / Previous and / Parent can be used.

В другом варианте осуществления разметка может задавать DataSource. Когда задан DataSource, машина привязок принимает ИД ресурса для «ресурса». Если «ресурс» обнаруживает свойство данных, то машина привязок задает «источник» привязки к объекту, возвращенному свойством данных ресурса DataSource. В противном случае, машина привязок устанавливает источник привязки на сам объект ресурса.In another embodiment, the markup may specify a DataSource. When a DataSource is specified, the binding machine accepts the resource ID for the "resource". If the "resource" detects a data property, then the binding machine sets the "source" of binding to the object returned by the data property of the DataSource resource. Otherwise, the binding machine sets the binding source to the resource object itself.

Специалистам очевидно, что существуют различные пути, которыми свойства 260-272 могут быть выражены с использованием языка разметки документов, поэтому способ, каким каждое из этих остальных свойств могут быть выражены, используя язык разметки документов, более подробно не описывается.It will be apparent to those skilled in the art that there are various ways in which properties 260-272 can be expressed using the markup language of documents, therefore, the manner in which each of these other properties can be expressed using the markup language of documents is not described in more detail.

Следующие три средства 404-410 создания обеспечивают иллюстративные примеры, относящиеся к типу элементов, которые позволяют привязывать настоящее изобретение. Средство 404 создания иллюстрирует поддержку привязки к подсвойствам и индексаторам. Средство 404 создания соответствует привязке, написанной на С# как di.a.b[3].c, где di это соответствующий элемент данных. Пока элемент данных, класс, реализующий di.a, класс, реализующий di.a.b, и класс, реализующий di.a.b[3].c, поддерживают механизм извещения, отвечающий настоящему изобретению, (например, IPropertyChange) и извещают об изменении своих свойств, привязка, заданная с использованием средства 404 создания, предписывает машине привязок автоматически обновлять связанное свойство (например, целевое свойство), чтобы отражать изменения значения данных источника.The following three creation tools 404-410 provide illustrative examples related to the type of elements that allow the present invention to be linked. Creation tool 404 illustrates support for binding to sub-properties and indexers. Creation tool 404 corresponds to a binding written in C # as di.a.b [3] .c, where di is the corresponding data item. While the data element, the class that implements di.a, the class that implements di.ab, and the class that implements di.ab [3] .c, support the notification mechanism of the present invention (for example, IPropertyChange) and notify about a change in their properties , the binding specified using the creation tool 404 instructs the binding machine to automatically update the associated property (eg, the target property) to reflect changes in the value of the source data.

Средство 406 создания иллюстрирует поддержку привязки к коллекции данных. Машина привязок автоматически использует текущую запись коллекции на каждом уровне (где, a, b и с представляют разные уровни). Например, если di.a имеет тип IDataCollection, то, для выбора свойства «b», привязка использует текущую запись коллекции. Таким образом, всякий раз при изменении текущей записи машина привязок автоматически обновляет значения, связанные с коллекцией данных.Creation tool 406 illustrates data collection binding support. The binding machine automatically uses the current collection entry at each level (where, a, b, and c represent different levels). For example, if di.a is of type IDataCollection, then, to select property “b”, the binding uses the current record in the collection. Thus, whenever the current record is changed, the binding machine automatically updates the values associated with the data collection.

Средство 408 создания иллюстрирует поддержку привязки к узлу XML. Путь 260 к значению обеспечивается с помощью выражения xpath, например, «/Customer/Order[@OrderID=10]/Amount», показанного на фиг. 4. Средство 410 создания иллюстрирует привязку к таблицам данных ADO. Для этой реализации путь 260 к значению обеспечивается как имя поля для конкретной строки, например, «OrderID», показанное на фиг. 4.Creation tool 408 illustrates XML node binding support. The path 260 to the value is provided using the xpath expression, for example, “/ Customer / Order [@ OrderID = 10] / Amount” shown in FIG. 4. Creation tool 410 illustrates binding to ADO data tables. For this implementation, the path 260 to the value is provided as the field name for a particular row, for example, “OrderID” shown in FIG. four.

Средство 412 создания создает привязки программно. Разработчик обеспечивает объектную ссылку (objectref) на объект, который привязка должна использовать в качестве элемента данных источника. Операторы программы, показанные в средстве 412 создания, создают привязку, которая ведет себя так же, как проиллюстрированная средством 410 создания. Метод SetBinding имеет ряд более тщательно разработанных вариантов, посредством которых программист может задавать любое из рассмотренных выше свойств привязки. В вышеприведенном простом примере в качестве объекта источника используется DataContext кнопки. Нижеследующие операторы программы создают одностороннюю привязку, в которой в качестве источника используется конкретный объект (известный как рабочий цикл):Creation tool 412 creates bindings programmatically. The developer provides an object reference (objectref) to the object that the binding should use as a source data element. The program operators shown in creation tool 412 create a binding that behaves the same way as illustrated by creation tool 410. The SetBinding method has a number of more elaborate options whereby a programmer can set any of the binding properties discussed above. In the simple example above, the DataContext of the button is used as the source object. The following program statements create a one-way binding in which a specific object (known as a duty cycle) is used as a source:

Object source =... некоторый произвольный объект... ;Object source = ... some arbitrary object ...;

Binding. SetBinding(myButton, Element.BackgroundProperty,Binding SetBinding (myButton, Element.BackgroundProperty,

"Color", BindType.OneWay, new ExplicitObjectRef(source));"Color", BindType.OneWay, new ExplicitObjectRef (source));

В нижеследующем примере кода отражена одна реализация управления свойством пользовательского интерфейса с помощью данных посредством механизма привязки, отвечающего настоящему изобретению. В этом примере значение данных (например, myInteger) и свойство ПИ (например, TextContent) активируются как привязка. Кроме того, для этой привязки задано преобразование (например, MyTranformer).In the following code example, one implementation of managing a user interface property using data through the binding mechanism of the present invention is shown. In this example, the data value (for example, myInteger) and the PI property (for example, TextContent) are activated as a binding. In addition, a transformation is specified for this binding (for example, MyTranformer).

<Test TextContent="*Data:Bind(Path=myInteger)"<Test TextContent = "* Data: Bind (Path = myInteger)"

Foreground="*Data:Bind(Path=MyInteger;Foreground = "* Data: Bind (Path = MyInteger;

Transformer=MyTransformer)"/>Transformer = MyTransformer) "/>

public class MyTransformer: IDataTransformerpublic class MyTransformer: IDataTransformer

{{

public object Transform(object o, DynamicProperty dp,public object Transform (object o, DynamicProperty dp,

CultureInfo culture)CultureInfo culture)

{{

if((int)o<0) return Red;if ((int) o <0) return Red;

else return Black;else return Black;

}}

public object InverseTransform(object o, PropertyInfopublic object InverseTransform (object o, PropertyInfo

info, CultureInfo culture)info, CultureInfo culture)

{{

return null;return null;

}}

}.}.

Таким образом, настоящее изобретение обеспечивает механизм связывания значения данных источника с целевым свойством, позволяющий разъединить изменения кодирования пользовательского интерфейса и логики. Таким образом, настоящее изобретение позволяет разработчикам легко изменять и модернизировать пользовательский интерфейс без необходимости изменять нижележащую логику приложения.Thus, the present invention provides a mechanism for associating a source data value with a target property, allowing the user interface and logic coding changes to be decoupled. Thus, the present invention allows developers to easily modify and modernize the user interface without having to change the underlying application logic.

Вышеизложенные описание изобретения, примеры и данные обеспечивают полное описание производства и использования состава изобретения. Поскольку в рамках сущности и объема изобретения возможны множественные варианты осуществления изобретения, изобретение задано нижеприведенной формулой изобретения.The foregoing description of the invention, examples and data provide a complete description of the production and use of the composition of the invention. Since multiple embodiments of the invention are possible within the spirit and scope of the invention, the invention is defined by the claims below.

Claims (25)

1. Компьютерная система для управления свойствами пользовательского интерфейса с помощью данных, содержащая
процессор и
память, выделяемую для множества выполняемых компьютером команд приложения, загружаемых в память для выполнения процессором, причем выполняемые компьютером команды осуществляют способ, содержащий этапы, на которых
создают привязку, ассоциирующую свойство пользовательского интерфейса со значением данных источника данных, и спецификацию привязки, описывающую упомянутую ассоциацию, причем упомянутым значением манипулируют посредством части логики приложения,
создают объект привязки, который ассоциирован с привязкой, который содержит свойства привязки, содержащие: путь, указывающий способ, посредством которого находят значения данных источника данных, тип привязки, определяющий тип привязки, который содержит тип односторонней привязки, используемой для привязки значения данных источника данных с нередактируемым целевым свойством пользовательского интерфейса, тип двусторонней привязки, используемой для привязки значения данных источника данных с редактируемым целевым свойством пользовательского интерфейса, тип обновления, который задает - когда должны иметь место обновления до целевого свойства пользовательского интерфейса, и свойство культуры, которое задает правила для преобразования значения данных источника данных; и
после приема от источника данных кодом системного уровня вычислительной среды извещения об изменении значения данных в источнике данных, автоматически отражают это изменение в свойстве пользовательского интерфейса посредством части пользовательского интерфейса упомянутого приложения с использованием спецификации упомянутой привязки в ответ на предписания от кода системного уровня, причем упомянутое уведомление принимают на основе выбранного типа привязки.
1. A computer system for managing user interface properties using data, containing
processor and
memory allocated to a plurality of computer-executable application instructions loaded into memory for execution by a processor, the computer-executing instructions implementing a method comprising the steps of
creating a binding associating a user interface property with a data source data value, and a binding specification describing the association, the value being manipulated through part of the application logic,
create a binding object that is associated with the binding, which contains binding properties, containing: a path indicating the method by which the data source data values are found, a binding type defining a binding type that contains the type of one-way binding used to bind the data source data value with non-editable target property of the user interface, the type of two-way binding used to bind the data source data value with the editable target property of the user Yale interface update type, which defines - when the update must take place to the desired properties of the user interface, and culture property that specifies the rules for converting the source data value of the data; and
after receiving from the data source the code of the system level of the computing environment, notifications of a change in the data value in the data source automatically reflect this change in the user interface property by means of the user interface part of the application using the specification of the binding in response to the instructions from the system level code, the notification being mentioned taken based on the selected binding type.
2. Компьютерная система по п.1, отличающаяся тем, что дополнительно содержит применение преобразования к значению данных в источнике данных в формат, приемлемый для свойства пользовательского интерфейса, до выполнения этого изменения в свойстве пользовательского интерфейса.2. The computer system according to claim 1, characterized in that it further comprises applying the conversion to the data value in the data source in a format acceptable for the user interface property, before making this change in the user interface property. 3. Компьютерная система по п.1, отличающаяся тем, что создание привязки включает в себя задание типа привязки для выполнения привязки.3. The computer system according to claim 1, characterized in that the creation of the binding includes setting the type of binding to perform the binding. 4. Компьютерная система по п.3, отличающаяся тем, что тип привязки включает в себя такой тип привязки, в соответствии с которым свойство пользовательского интерфейса обновляется на основании значения данных источника при активации привязки.4. The computer system according to claim 3, characterized in that the type of binding includes such a type of binding, according to which the user interface property is updated based on the value of the source data when the binding is activated. 5. Компьютерная система по п.3, отличающаяся тем, что тип привязки включает в себя такой тип привязки, в соответствии с которым свойство пользовательского интерфейса обновляется при изменении значения данных источника.5. The computer system according to claim 3, characterized in that the type of binding includes a type of binding, according to which the user interface property is updated when the value of the source data changes. 6. Компьютерная система по п.1, отличающаяся тем, что дополнительно содержит обновление значения данных в источнике данных после изменения пользователем свойства пользовательского интерфейса с помощью пользовательского интерфейса.6. The computer system according to claim 1, characterized in that it further comprises updating the data value in the data source after the user changes the properties of the user interface using the user interface. 7. Компьютерная система по п.6, отличающаяся тем, что обновление значения данных в источнике осуществляется асинхронно почти сразу после изменения свойства пользовательского интерфейса.7. The computer system according to claim 6, characterized in that the data value in the source is updated asynchronously almost immediately after changing the user interface property. 8. Компьютерная система по п.6, отличающаяся тем, что обновление значения данных в источнике данных осуществляется асинхронно при потере фокусировки на свойстве пользовательского интерфейса.8. The computer system according to claim 6, characterized in that the data value in the data source is updated asynchronously when the focus is lost on the user interface property. 9. Компьютерная система по п.6, отличающаяся тем, что обновление значения данных в источнике данных осуществляется в явном виде приложением.9. The computer system according to claim 6, characterized in that the data value in the data source is updated explicitly by the application. 10. Компьютерная система по п.1, отличающаяся тем, что создание привязки задается с использованием программного кода.10. The computer system according to claim 1, characterized in that the creation of the binding is set using program code. 11. Компьютерная система по п.1, отличающаяся тем, что создание привязки задается с использованием языка разметки.11. The computer system according to claim 1, characterized in that the creation of the binding is set using a markup language. 12. Считываемая компьютером среда, имеющая выполняемые компьютером команды для управления свойствами пользовательского интерфейса с помощью данных из источника данных, содержащие
часть логики в составе приложения для манипулирования значением данных в источнике данных,
часть пользовательского интерфейса в составе приложения, причем эта часть пользовательского интерфейса отвечает за отображение на экране свойств пользовательского интерфейса, при этом упомянутая часть пользовательского интерфейса не зависит от части логики, и
по меньшей мере одну привязку, ассоциирующую свойство пользовательского интерфейса со значением данных в источнике данных, и соответствующую ей спецификацию привязки, описывающую упомянутую ассоциацию, так что позволяет извещать код системного уровня об изменении, посредством части логики, значения данных в источнике данных, для того чтобы код системного уровня мог предписывать части пользовательского интерфейса отражать изменение свойства пользовательского интерфейса, причем упомянутая по меньшей мере одна привязка ассоциирована с объектом привязки, который содержит свойства привязки, содержащие: путь, указывающий способ, посредством которого находят значения данных источника данных, тип привязки, который определяет тип привязки, который содержит тип односторонней привязки, используемый для привязки упомянутого значения данных источника данных с нередактируемым целевым свойством пользовательского интерфейса, тип двусторонней привязки, используемый для привязки значения данных источника данных с редактируемым целевым свойством пользовательского интерфейса, тип обновления, который задает - когда должны иметь место обновления до целевого свойства пользовательского интерфейса, и свойство культуры, которое задает правила для преобразования значения данных источника данных.
12. A computer-readable medium having computer-executable instructions for managing user interface properties using data from a data source containing
part of the logic in the application for manipulating the value of the data in the data source,
part of the user interface as part of the application, and this part of the user interface is responsible for displaying the properties of the user interface on the screen, while the said part of the user interface is independent of the logic part, and
at least one binding associating a user interface property with a data value in the data source, and a corresponding binding specification describing the association, so that it is possible to notify the system level code of a change, by a part of the logic, of the data value in the data source, so that system level code could prescribe portions of a user interface to reflect a change in a user interface property, said at least one binding being associated with a binding object that contains binding properties, comprising: a path indicating a method by which data source data values are found, a binding type that defines a binding type that contains a one-way binding type used to bind said data source data value with an uneditable target property user interface, a two-way binding type used to bind a data source data value with an editable user interface target property , The type of update, which sets - when they should take place upgrade to the target properties of the user interface, and cultural property, which sets the rules for the conversion of values data source.
13. Считываемая компьютером среда по п.12, отличающаяся тем, что спецификация привязки задается программно.13. The computer-readable medium of claim 12, wherein the binding specification is software defined. 14. Считываемая компьютером среда по п.12, отличающаяся тем, что спецификация привязки задается с использованием языка разметки.14. The computer-readable medium of claim 12, wherein the binding specification is specified using a markup language. 15. Считываемая компьютером среда по п.12, отличающаяся тем, что спецификация привязки идентифицирует элемент данных источника, путь к значению данных в элементе данных источника, элемент пользовательского интерфейса, соответствующий упомянутому элементу данных источника, и свойство пользовательского интерфейса, соответствующее упомянутому элементу пользовательского интерфейса.15. The computer-readable medium of claim 12, wherein the binding specification identifies a source data element, a path to a data value in a source data element, a user interface element corresponding to said source data element, and a user interface property corresponding to said user interface element . 16. Считываемая компьютером среда по п.15, отличающаяся тем, что спецификация привязки дополнительно идентифицирует преобразование, применяемое к значению данных в источнике данных для преобразования его в формат, приемлемый для свойства пользовательского интерфейса, до того, как изменение будет выполнено в свойстве пользовательского интерфейса.16. The computer-readable medium of claim 15, wherein the binding specification further identifies the transformation applied to the data value in the data source to convert it to a format acceptable for the user interface property before the change is made to the user interface property . 17. Считываемая компьютером среда по п.15, отличающаяся тем, что спецификация привязки дополнительно идентифицирует тип привязки.17. The computer-readable medium of claim 15, wherein the binding specification further identifies the type of binding. 18. Считываемая компьютером среда по п.17, отличающаяся тем, что тип привязки включает в себя такой тип привязки, в соответствии с которым свойство пользовательского интерфейса обновляется на основании значения данных при активации привязки.18. The computer-readable medium of claim 17, wherein the type of binding includes a type of binding, according to which the user interface property is updated based on the data value when the binding is activated. 19. Считываемая компьютером среда по п.17, отличающаяся тем, что тип привязки включает в себя такой тип привязки, в соответствии с которым свойство пользовательского интерфейса обновляется при изменении значения данных.19. The computer-readable medium of claim 17, wherein the type of binding includes a type of binding in accordance with which the user interface property is updated when the data value changes. 20. Считываемая компьютером среда по п.15, отличающаяся тем, что спецификация привязки дополнительно задает, что значение данных в источнике данных должно быть обновлено, когда свойство пользовательского интерфейса претерпевает изменение от пользователя.20. The computer-readable medium of claim 15, wherein the binding specification further specifies that the data value in the data source should be updated when the user interface property undergoes a change from the user. 21. Считываемая компьютером среда по п.20, отличающаяся тем, что значение данных обновляется асинхронно почти сразу после изменения пользовательского интерфейса.21. The computer-readable medium of claim 20, wherein the data value is updated asynchronously almost immediately after changing the user interface. 22. Считываемая компьютером среда по п.20, отличающаяся тем, что значение данных обновляется асинхронно при потере фокусировки на свойстве пользовательского интерфейса.22. Machine-readable medium according to claim 20, characterized in that the data value is updated asynchronously when the focus is lost on the user interface property. 23. Считываемая компьютером среда по п.12, отличающаяся тем, что обновление значения данных в источнике данных осуществляется в явном виде приложением.23. The computer-readable medium of claim 12, wherein the data value in the data source is updated explicitly by the application. 24. Считываемая компьютером среда по п.12, отличающаяся тем, что дополнительно содержит создание другой привязки, связывающей упомянутое свойство пользовательского интерфейса с другим значением данных в источнике данных, отличным от первого значения данных.24. Machine-readable medium according to claim 12, characterized in that it further comprises creating another binding linking said property of the user interface with a different data value in the data source other than the first data value. 25. Считываемая компьютером среда по п.12, отличающаяся тем, что источник данных задается посредством XPath в XML, либо столбца в объекте данных ActiveX (ADO), либо отражения. 25. The computer-readable medium of claim 12, wherein the data source is specified by means of XPath in XML, or a column in an ActiveX data object (ADO), or reflection.
RU2004119949/09A 2003-05-17 2003-05-17 System and method of controlling user interface properties using data RU2358307C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2004119949/09A RU2358307C2 (en) 2003-05-17 2003-05-17 System and method of controlling user interface properties using data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2004119949/09A RU2358307C2 (en) 2003-05-17 2003-05-17 System and method of controlling user interface properties using data

Publications (2)

Publication Number Publication Date
RU2004119949A RU2004119949A (en) 2005-03-27
RU2358307C2 true RU2358307C2 (en) 2009-06-10

Family

ID=35560372

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004119949/09A RU2358307C2 (en) 2003-05-17 2003-05-17 System and method of controlling user interface properties using data

Country Status (1)

Country Link
RU (1) RU2358307C2 (en)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DAVID SWEET at al. KDE 2.0 Development, 2001, опубликованная на сайте http://ftp.riken.go.jp/pub/X11/kde-jp/kde/document/kde2dev.pdf, с.40-45, 88-102, 266-268. US 2003/0035003 A1 (MARCOS PAUL et al), 28.02.2003. *

Also Published As

Publication number Publication date
RU2004119949A (en) 2005-03-27

Similar Documents

Publication Publication Date Title
US8793649B2 (en) XML application framework
US7886269B2 (en) XML application framework
US7519969B2 (en) System and method for controlling user interface properties with data
US7577938B2 (en) Data association
KR101377311B1 (en) Integrating charts in documents
US8095565B2 (en) Metadata driven user interface
EP0640913B1 (en) Multilingual standard resources
JP5354602B2 (en) Producer graph oriented programming and execution
US20050188350A1 (en) Data binding
AU2005200697B2 (en) Priority binding
JP2004038958A (en) Computer-readable medium, system and method for associating property with object
JPH11119963A (en) Method and system relating to automatic persistence of control in window environment
US20080005752A1 (en) Methods, systems, and computer program products for generating application processes by linking applications
US20050289450A1 (en) User interface virtualization
US7506341B2 (en) System and method for controlling user interface properties with data
AU2003239503B8 (en) System and method for controlling user interface properties with data
US7523129B1 (en) Data-binding enhancements
JP2007538314A (en) General user interface command architecture
RU2358307C2 (en) System and method of controlling user interface properties using data
JP5010625B2 (en) Recording medium and system storing program for controlling user interface property by data
ZA200405128B (en) System and method for controlling use interface properties with data.
KR20060059335A (en) System and method for controlling user interface properties with data
Ghosh et al. Application Design and Programming Model
Vyas CoolStateLA NMS V1. 0

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130518