VSTO 添加 "empty" DocumentProperty
VSTO add "empty" DocumentProperty
我目前正在为我的公司开发一个 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);
}
}
目前为止一切正常。
但是现在我需要保存 "empty" 属性,其中 property.ValueToPersist
是 " "
(恰好两个空格)。
我在 foreach 循环中附加了调试器,此时我想保存的 属性 的 name/value 是正确的,但是当我查看文档的标记时 属性 是有但没有值:
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="17" name="propertyName">
<vt:lpwstr/>
</property>
当然,如果我重新打开文档并阅读这些属性,则上述 属性 没有任何价值。
添加属性时有什么方法可以保留空格吗?或者还有其他解决方法吗?
因为我无法控制 .Add
的实际作用。
如有任何帮助,我们将不胜感激!
BR
对于任何想知道的人,当然不能将空格保存为 XML 值,它们会被删除。我们的解决方案是在保存它们时将它们包装在 { }
中,并在将它们读入我们的 InMemory 属性 管理器时将它们删除。
我目前正在为我的公司开发一个 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);
}
}
目前为止一切正常。
但是现在我需要保存 "empty" 属性,其中 property.ValueToPersist
是 " "
(恰好两个空格)。
我在 foreach 循环中附加了调试器,此时我想保存的 属性 的 name/value 是正确的,但是当我查看文档的标记时 属性 是有但没有值:
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="17" name="propertyName">
<vt:lpwstr/>
</property>
当然,如果我重新打开文档并阅读这些属性,则上述 属性 没有任何价值。
添加属性时有什么方法可以保留空格吗?或者还有其他解决方法吗?
因为我无法控制 .Add
的实际作用。
如有任何帮助,我们将不胜感激!
BR
对于任何想知道的人,当然不能将空格保存为 XML 值,它们会被删除。我们的解决方案是在保存它们时将它们包装在 { }
中,并在将它们读入我们的 InMemory 属性 管理器时将它们删除。