【问题标题】:Undo/Redo Support for Table Changes in WPF RichTextBoxWPF RichTextBox 中对表更改的撤消/重做支持
【发布时间】:2010-05-25 19:00:31
【问题描述】:

作为编辑器项目的一部分,我需要向 WPF RichTextBox 控件添加功能,以允许用户对表执行操作。其中一项操作是将新的宽度值应用于表格的一列或多列。我有一个函数将一个新的 Width 值应用到有问题的 TableColumn 对象,并且该表很好地调整了自身的大小。但是,我注意到列宽更改操作似乎没有添加到撤消堆栈中。

换句话说,如果用户键入内容,然后更改列宽,然后选择撤消,RichTextBox 控件将撤消用户的键入。撤消和重做似乎不会影响 TableColumn 对象上的属性更改。

是否有某种方法可以使此操作以实际上可撤消/可重做的方式发生?

【问题讨论】:

    标签: wpf richtextbox


    【解决方案1】:

    不幸的是,FlowDocument TableColumn 对象似乎被视为布局指南,而不是真正的强制对象。因此,内置到 WPF RichTextBox 控件中的更改跟踪系统不会跟踪对这些对象的更改。详情请见here

    我通过将涉及 TableColumn 对象的表更改变成原子操作来解决这个问题,这些原子操作将由更改跟踪系统进行跟踪。基本上,如果我想执行涉及操作 TableColumn 对象的操作,我开始了一个分组撤消操作,从 FlowDocument 中删除封闭的 Table,根据需要对其进行操作,将其添加回 FlowDocument,然后关闭撤消批处理。这样,更改跟踪系统会记录现有内容的替换,撤消/重做可以正确处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多