У меня есть приложение, которое генерирует документы Open XML с помощью Content Controls.
Для создания нового Content Control я использую Interop и метод ContentControls.Add
.Этот метод возвращает экземпляр добавленного Контент Контроля.
У меня есть логика, которая сохраняет идентификатор Контент Контроля, чтобы ссылаться на него позже, но на некоторых компьютерах у меня возникла странная проблема.
Когда я получаю доступ к свойству ID только что созданного Контент Контроля, он возвращает строку с числовым идентификатором, проблема в том, что когда это значение слишком велико, после сохранения документа, если я просматриваю document.xml в сгенерированном документе элемент <w:id/>
элемента <w:sdtPr/>
имеет отрицательное значение, то есть эквивалент со знаком, который я получил от свойства Id
сгенерированного элемента управления.
Например:
var contentControl = ContentControls.Add(...);
var contentControlId = contentControl.ID;
// the value of contentControlId is "3440157266"
Если я сохраню документ и открою его в проводнике пакетов, Id
элемента управления контентом будет "-854810030" вместо "3440157266".
Что я понял, это:
((int)uint.Parse("3440157266")).ToString() returns "-854810030"
Есть идеи, почему это происходит?Эту проблему трудно воспроизвести, поскольку я не управляю Id
сгенерированных элементов управления, Id
автоматически создается библиотеками Interop.