ВСТО добавить "пустой" DocumentProperty - PullRequest
0 голосов
/ 06 декабря 2018

В настоящее время я работаю над проектом VSTO для моей компании, и чтобы помочь клиенту с каким-то странным обходным путем, мне нужно сэкономить два пробела (" ") в качестве значения DocumentProperty.Вот фрагмент кода, как я использую его до сих пор:

public void SavePropertiesToDocument(IEnumerable<ContentControl> contentControls)
{
    DocumentProperties documentProperties = Document.CustomDocumentProperties;

    var propertiesToPersist = GetPropertiesFromInMemoryManager()

    foreach (var property in propertiesToPersist)
    {
        documentProperties.Add(property.Name, false, MsoDocProperties.msoPropertyTypeString, property.ValueToPersist);
    }
}

Пока все работает отлично.Но теперь мне нужно сохранить «пустое» свойство, где property.ValueToPersist равно " " (ровно два пробела).Я прикрепил отладчик к циклу foreach, и имя / значение свойства, которое я хочу сохранить, на данный момент верны, но когда я просматриваю разметку документа, свойство появляется, но без значения:

<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="17" name="propertyName">
    <vt:lpwstr/>
</property>

И, конечно, если я снова открою документ и прочту эти свойства, указанное свойство не имеет значения.Есть ли способ сохранить пробелы при добавлении свойств?Или есть другой способ обойти это?Поскольку я не имею никакого контроля над тем, что в действительности делает .Add.

Любая помощь будет принята с благодарностью!

BR

1 Ответ

0 голосов
/ 09 января 2019

Для тех, кто интересуется, конечно, вы не можете просто сохранить пробелы в виде значений XML, которые они удаляют.Нашим решением было просто обернуть их в { } при сохранении и удалить их при чтении их в менеджере свойств InMemory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...