Пошаговое руководство. Привязка элементов управления содержимым к пользовательским XML-частям
В этом пошаговом руководстве показано, как привязать элементы управления содержимым в настройке на уровне документа для Word к XML-данным, хранящимся в документе.
Область применения. Сведения в этом разделе относятся к проектам уровня документа для Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.
Word позволяет хранить XML-данные с именем пользовательских XML-частей в документе. Вы можете управлять отображением этих данных, привязывая элементы управления содержимым к элементам в пользовательской XML-части. Пример документа в этом пошаговом руководстве отображает данные о сотрудниках, которые хранятся в пользовательской XML-части. При открытии документа элементы управления содержимым показывают значения XML-элементов. Любые изменения, внесенные в текст в элементах управления содержимым, сохраняются в пользовательской XML-части.
В этом пошаговом руководстве рассматриваются следующие задачи:
добавление элементов управления содержимым в документ Word в проекте на уровне документа во время разработки;
создание файла XML-данных и XML-схемы, которая определяет элементы для привязки к элементам управления содержимым;
добавление схемы XML к документу во время разработки;
Добавление содержимого XML-файла в настраиваемую XML-часть документа во время выполнения.
привязка элементов управления содержимым к элементам в пользовательской XML-части;
привязка DropDownListContentControl к набору значений, определенных в схеме XML.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье "Настройка компьютера для разработки решений Office".
Microsoft Word.
Создание проекта документа Word
Создайте документ Word, который будет использоваться в этом руководстве.
Создание проекта документа Word
Создайте проект документа Word с именем EmployeeControls. Создайте документ для решения. Дополнительные сведения см. в статье "Практическое руководство. Создание проектов Office в Visual Studio".
Visual Studio открывает новый документ Word в конструкторе и добавляет проект EmployeeControls в Обозреватель решений.
Добавление элементов управления содержимым в документ
Создайте таблицу, содержащую три различных типа элементов управления содержимым, в которой пользователь может просмотреть или изменить сведения о сотруднике.
Порядок добавления элементов управления содержимым в документ
В документе Word, размещенном в конструкторе Visual Studio, на ленте выберите вкладку "Вставка ".
В группе таблиц выберите таблицу и вставьте таблицу с 2 столбцами и 3 строками.
Введите текст в первый столбец, как показано в следующем столбце:
Имя сотрудника Дата найма Заголовок В втором столбце таблицы выберите первую строку (рядом с именем сотрудника).
На ленте выберите вкладку "Разработчик ".
Примечание.
Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе "Практическое руководство. Отображение вкладки разработчика на ленте".
В группе "Элементы управления" нажмите кнопку "Текст", чтобы добавить ее PlainTextContentControl в первую ячейку.
В втором столбце таблицы выберите вторую строку (рядом с датой найма).
В группе "Элементы управления" нажмите кнопку "Выбор даты", чтобы добавить вторую DatePickerContentControl ячейку.
Во втором столбце таблицы выберите третью строку (рядом с заголовком).
В группе "Элементы управления" нажмите кнопку раскрывающегося списка, чтобы добавить DropDownListContentControl ее в последнюю ячейку.
Вот и весь пользовательский интерфейс для этого проекта. При запуске проекта можно ввести текст в первой строке и выбрать дату во второй строке. Следующий шаг — присоединение данных, которые будут отображаться в документе, к XML-файлу.
Создание XML-файла данных
Как правило, вы будете получать XML-данные для хранения в пользовательской XML-части из внешнего источника, например файла или базы данных. В этом пошаговом руководстве создается XML-файл, содержащий данные о сотрудниках, помеченные элементами, которые необходимо привязать к элементам управления содержимым в документе. Чтобы сделать данные доступными во время выполнения, внесите XML-файл в качестве ресурса в сборку настройки.
Создание файла данных
В меню Проект выберите пункт Добавить новый элемент.
Откроется диалоговое окно Добавление нового элемента.
В области шаблонов выберите XML-файл.
Присвойте файлу employees.xml и нажмите кнопку "Добавить".
Файл employees.xml открывается в редакторе кода.
Замените содержимое файла employees.xml следующим текстом.
<?xml version="1.0" encoding="utf-8" ?> <employees xmlns="http://schemas.microsoft.com/vsto/samples"> <employee> <name>Karina Leal</name> <hireDate>1999-04-01</hireDate> <title>Manager</title> </employee> </employees>
В Обозреватель решений выберите файл employees.xml.
В окне "Свойства" выберите свойство "Действие сборки", а затем измените значение на Внедренный ресурс.
Этот шаг внедряет XML-файл в качестве ресурса в сборку при построении проекта. Это позволяет получить доступ к содержимому XML-файла во время выполнения.
Создание XML-схемы
Если вам необходимо привязать элемент управления содержимым к одному элементу в пользовательской XML-части, необязательно использовать схему XML. Однако для привязки DropDownListContentControl к набору значений необходимо создать схему XML, которая проверяет созданный ранее файл XML-данных. Схема XML определяет возможные значения для элемента title
. Вы привяжете DropDownListContentControl к этому элементу далее в этом пошаговом руководстве.
Порядок создания схемы XML
В меню Проект выберите пункт Добавить новый элемент.
Откроется диалоговое окно Добавление нового элемента.
В области "Шаблоны" выберите схему XML.
Назовите схему employees.xsd и нажмите кнопку "Добавить ".
Открывается конструктор схем.
В Обозреватель решений откройте контекстное меню для employees.xsd и выберите команду View Code.
Замените содержимое файла employees.xsd на следующую схему.
<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns="http://schemas.microsoft.com/vsto/samples" targetNamespace="http://schemas.microsoft.com/vsto/samples" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="employees" type="EmployeesType"></xs:element> <xs:complexType name="EmployeesType"> <xs:all> <xs:element name="employee" type="EmployeeType"/> </xs:all> </xs:complexType> <xs:complexType name="EmployeeType"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="hireDate" type="xs:date" minOccurs="1" maxOccurs="1"/> <xs:element name="title" type="TitleType" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> <xs:simpleType name="TitleType"> <xs:restriction base="xs:string"> <xs:enumeration value ="Engineer"/> <xs:enumeration value ="Designer"/> <xs:enumeration value ="Manager"/> </xs:restriction> </xs:simpleType> </xs:schema>
В меню "Файл" нажмите кнопку "Сохранить все", чтобы сохранить изменения в файлах employees.xml и employees.xsd.
Присоединение xml-схемы к документу
XML-схему необходимо присоединить к документу, чтобы привязать DropDownListContentControl к допустимым значениям элемента title
.
Присоединение xml-схемы к документу (Word 2013)
Активируйте EmployeeControls.docx в конструкторе.
На ленте выберите вкладку "Разработчик " и нажмите кнопку "Надстройки ".
В диалоговом окне "Шаблоны и надстройки" выберите вкладку "Схема XML" и нажмите кнопку "Добавить схему".
Перейдите к созданной ранее схеме employees.xsd , которая находится в каталоге проекта, а затем нажмите кнопку "Открыть ".
Нажмите кнопку "ОК" в диалоговом окне "Схема Параметры".
Нажмите кнопку "ОК", чтобы закрыть диалоговое окно "Шаблоны и надстройки".
Добавление схемы XML к документу (Word 2010)
Активируйте EmployeeControls.docx в конструкторе.
На ленте выберите вкладку "Разработчик ".
В группе XML нажмите кнопку "Схема".
В диалоговом окне "Шаблоны и надстройки" выберите вкладку "Схема XML" и нажмите кнопку "Добавить схему".
Перейдите к созданной ранее схеме employees.xsd , расположенной в каталоге проекта, и нажмите кнопку "Открыть ".
Нажмите кнопку "ОК" в диалоговом окне "Схема Параметры".
Нажмите кнопку "ОК", чтобы закрыть диалоговое окно "Шаблоны и надстройки".
Откроется область задач структуры XML.
Закройте область задач структуры XML.
Добавление пользовательской XML-части в документ
Перед привязкой элементов управления содержимым к элементам в XML-файле необходимо добавить содержимое XML-файла в новую пользовательскую XML-часть в документе.
Порядок добавления пользовательской XML-части в документ
В Обозреватель решений откройте контекстное меню для ThisDocument.cs или ThisDocument.vb и выберите команду View Code.
Добавьте в класс
ThisDocument
следующие объявления. В этом коде объявляются несколько объектов, которые будут использоваться для добавления пользовательской XML-части в документ.Добавьте приведенный ниже метод в класс
ThisDocument
. Этот метод получает содержимое файла данных XML, внедренного в сборку в качестве ресурса, и возвращает содержимое в виде XML-строки.private string GetXmlFromResource() { System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream stream1 = asm.GetManifestResourceStream( "EmployeeControls.employees.xml"); using (System.IO.StreamReader resourceReader = new System.IO.StreamReader(stream1)) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } return null; }
Добавьте приведенный ниже метод в класс
ThisDocument
. МетодAddCustomXmlPart
создает пользовательскую XML-часть, которая содержит XML-строку, передаваемую в метод.Чтобы пользовательская XML-часть создавалась всего один раз, метод создает ее, только если пользовательская XML-часть с соответствующим идентификатором GUID еще не существует в документе. При первом вызове этого метода он сохраняет значение свойства Id в строке
employeeXMLPartID
. ЗначениеemployeeXMLPartID
строки хранится в документе, поскольку он был объявлен с помощью атрибута CachedAttribute.private void AddCustomXmlPart(string xmlData) { if (xmlData != null) { employeeXMLPart = this.CustomXMLParts.SelectByID(employeeXMLPartID); if (employeeXMLPart == null) { employeeXMLPart = this.CustomXMLParts.Add(xmlData); employeeXMLPart.NamespaceManager.AddNamespace("ns", @"http://schemas.microsoft.com/vsto/samples"); employeeXMLPartID = employeeXMLPart.Id; } } }
Привязка элементов управления содержимым к элементам пользовательской XML-части
Привязка каждого элемента управления содержимым к элементу пользовательской XML-части с помощью свойства XMLMapping каждого элемента управления содержимым.
Порядок привязки элементов управления содержимым к элементам в пользовательской XML-части
Добавьте приведенный ниже метод в класс
ThisDocument
. Он привязывает каждый элемент управления содержимым к элементу в пользовательской XML-части и задает формат отображения даты DatePickerContentControl.private void BindControlsToCustomXmlPart() { string xPathName = "ns:employees/ns:employee/ns:name"; this.plainTextContentControl1.XMLMapping.SetMapping(xPathName, prefix, employeeXMLPart); string xPathDate = "ns:employees/ns:employee/ns:hireDate"; this.datePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy"; this.datePickerContentControl1.XMLMapping.SetMapping(xPathDate, prefix, employeeXMLPart); string xPathTitle = "ns:employees/ns:employee/ns:title"; this.dropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, prefix, employeeXMLPart); }
Запустите код при открытии документа
Создайте пользовательскую XML-часть и привяжите пользовательские элементы управления к данным при открытии документа.
Порядок выполнения кода после открытия документа
Добавьте в метод
ThisDocument_Startup
классаThisDocument
следующий код. Этот код получает XML-строку из файла employees.xml , добавляет XML-строку в новую пользовательскую XML-часть документа и привязывает элементы управления содержимым к элементам пользовательской XML-части.
Тестирование проекта
При открытии документа элементы управления содержимым отображают данные из элементов в пользовательской XML-части. Щелкните DropDownListContentControl один из трех допустимых значений элемента title
, определенных в файле employees.xsd . Если изменить данные в любом из элементов управления содержимым, новые значения сохраняются в пользовательской XML-части в документе.
Проверка элементов управления содержимым
Нажмите клавишу F5, чтобы запустить проект.
Убедитесь, что таблица в документе похожа на следующую таблицу. Каждая строка во втором столбце извлекается из элемента в пользовательской XML-части в документе.
Столбец Значение Имя сотрудника Карина Лиал Дата найма 1 апреля 1999 г. Заголовок Менеджер Выберите ячейку справа от ячейки "Имя сотрудника" и введите другое имя.
Выберите ячейку справа от ячейки "Дата найма" и выберите другую дату в средстве выбора дат.
Выберите ячейку справа от ячейки Title и выберите новый элемент из раскрывающегося списка.
Сохраните и закройте документ.
В проводник откройте папку \bin\Debug в расположении проекта.
Откройте контекстное меню для EmployeeControls.docx и нажмите кнопку "Переименовать".
Назовите файл EmployeeControls.docx.zip.
Документ EmployeeControls.docx сохраняется в формате Open XML. Переименование этого документа с расширением ZIP-файла позволяет изучить содержимое документа. Дополнительные сведения о Open XML см. в технической статье о форматах Open XML в Office (2007).
Откройте ZIP-файл EmployeeControls.docx.zip.
Откройте папку customXml .
Откройте контекстное меню для item2.xml и нажмите кнопку "Открыть".
Этот файл содержит пользовательскую XML-часть, которая была добавлена в документ.
Убедитесь, что элементы
name
,hireDate
иtitle
содержат новые значения, введенные в элементы управления содержимым в документе.Закройте файл item2.xml.
Следующие шаги
Дополнительные сведения об использовании элементов управления содержимым см. в следующих разделах.
Использование всех доступных элементов управления содержимым для создания шаблона. Дополнительные сведения см. в пошаговом руководстве. Создание шаблона с помощью элементов управления содержимым.
Изменение данных в пользовательских XML-частях при закрытии документа. При следующем открытии документа пользователем элементы управления содержимым, привязанные к XML-элементам, покажут новые данные.
Использование элементов управления содержимым для защиты частей документов. Дополнительные сведения см. в статье "Практическое руководство. Защита частей документов с помощью элементов управления содержимым".
Связанный контент
- Автоматизация Word с помощью расширенных объектов
- Элементы управления содержимым
- Практическое руководство. Добавление элементов управления содержимым в документы Word
- Практическое руководство. Защита частей документов с помощью элементов управления содержимым
- Общие сведения о элементах размещения и элементах управления узлами
- Программные ограничения элементов узла и элементов управления узлами
- Добавление элементов управления в документы Office во время выполнения