PowerPoint 2013 VSTO 撤消-重做 CustomerData 或 CustomXMLPart 操作
PowerPoint 2013 VSTO Undo-Redo CustomerData or CustomXMLPart manipulation
我正在构建一个 PowerPoint VSTO 插件,我在演示文稿中存储了大量元数据。
我目前将其存储为 XML 作为全局数据的 AddIn.Application.ActivePresentation.CustomXMLParts
和幻灯片特定信息的 Slide.CustomerData
。
问题是它们都没有出现在 Undo/Redo 堆栈中。我可以对演示文稿进行五万亿次更改,并在中间某处修改我的自定义 XML,撤消所有内容并仍然读回我上次设置的 XML。
因为我希望我的修改能够 Undo/Redo,我能想到的最好的办法是将 XML 存储在一个形状上,并在每次修改时删除并重新创建它。这样做的问题是用户可以不经意地删除形状或存储形状的幻灯片。
我需要一些不那么显眼的东西(以防止意外删除)和 - 最好是全局 - 我可以在演示文稿上存储我的 XML 的对象是 deletable/recreatable 并修改 Undo/Redo堆栈。
有这样的吗?
或者有更好的方法吗?
回答我自己的问题:
有Tags!
当您使用 Tags.Add("Name", "Value")
添加内容时,它是可以正确撤消的,这与 CustomerData
或 CustomXMLParts
不同。
标签出现在演示文稿和幻灯片上,所以我的两个场景都被涵盖了。
我正在构建一个 PowerPoint VSTO 插件,我在演示文稿中存储了大量元数据。
我目前将其存储为 XML 作为全局数据的 AddIn.Application.ActivePresentation.CustomXMLParts
和幻灯片特定信息的 Slide.CustomerData
。
问题是它们都没有出现在 Undo/Redo 堆栈中。我可以对演示文稿进行五万亿次更改,并在中间某处修改我的自定义 XML,撤消所有内容并仍然读回我上次设置的 XML。
因为我希望我的修改能够 Undo/Redo,我能想到的最好的办法是将 XML 存储在一个形状上,并在每次修改时删除并重新创建它。这样做的问题是用户可以不经意地删除形状或存储形状的幻灯片。
我需要一些不那么显眼的东西(以防止意外删除)和 - 最好是全局 - 我可以在演示文稿上存储我的 XML 的对象是 deletable/recreatable 并修改 Undo/Redo堆栈。
有这样的吗?
或者有更好的方法吗?
回答我自己的问题:
有Tags!
当您使用 Tags.Add("Name", "Value")
添加内容时,它是可以正确撤消的,这与 CustomerData
或 CustomXMLParts
不同。
标签出现在演示文稿和幻灯片上,所以我的两个场景都被涵盖了。