Я создаю надстройку Office, которая должна вставлять элементы управления содержимым, указывающие на свойства документа, такие как заголовок, подзаголовок, автор и т. Д., На курсор. Но если я просто назову их «заголовок», содержимое элементов управления заголовком в заголовке не отражает эти изменения. Насколько я понимаю из документации, мне нужно привязать элементы управления к некоторому элементу customXml. Я полагаю, что вставка моего собственного XML будет работать, но я хочу связать их со свойствами основного документа, которые уже есть.
Когда я открываю вкладку разработчика, появляется панель сопоставления XML, которая показывает мне 3 пользовательских XML-документа со схемой, настроенной на некоторые XML-документы по умолчанию, где http://schemas.openxmlformats.org/package/2006/metadata/core-properties, кажется, содержит свойства, которые я хочуиспользовать. Этот xml находится в папке docProps в docx (zip) как core.xml .
Но как мне подключить этот XML к элементам управления содержимым, которые я вставляю? Существующие элементы управления содержимым были вставлены на вкладку «Вставка» в Word в разделе «Быстрые детали», «Свойства документа». Я в основном хочу повторить, что в надстройке, так что изменения, которые пользователь вносит в них, также изменит содержимое от существующих элементов управления в верхнем / нижнем колонтитуле.
[править]
Кажется, что основные свойства также доступны через customXmlParts. По крайней мере, когда я получаю Id основных свойств по:
Office.context.document.customXmlParts.getByNamespaceAsync("http://schemas.openxmlformats.org/package/2006/metadata/core-properties", result => {
this.log(result);
}).catch(myError => { this.log("NS: " + myError); });
, он возвращает бит json с массивом значений, где Id является видимым. С этим идентификатором я могу получить строку XML, в которой отображаются обязательные свойства:
Office.context.document.customXmlParts.getByIdAsync("{6C3C8BC8-F283-45AE-878A-BAB7291924A1}", (result) => {
const xml = result.value;
xml.getXmlAsync({}, (result2) => {
this.log(result2.value);
});
});
Теперь мне просто нужно выяснить, как связать их с моими элементами управления контентом. В документах говорится, что основные свойства не могут быть сопоставлены с элементами управления расширенного текста. Вставка элемента управления с помощью
Word.run(async context => {
const _sel = context.document.getSelection();
_sel.load();
await context.sync();
const _cc = _sel.insertContentControl();
_cc.title = 'Author';
await context.sync();
});
, кажется, добавляет именно это: элемент управления расширенным текстовым содержимым. И даже в этом случае в документах неясно, как именно ссылаться на элемент управления содержимым в Office.context.document.bindings.addFromNamedItemAsync (). Любые указатели о том, как это сделать, будут с благодарностью!