RichTextBox撤消自定义UIContainer的过程

时间:2011-12-18 18:47:28

标签: c# wpf richtextbox

我在WPF中有RichTextBox,其中包含InlineUIContainer和一些自定义对象。如何允许该UIContainer的撤消事件?

1 个答案:

答案 0 :(得分:-1)

首先将命令绑定到撤消按钮。 写一个与此类似的CommandBinding<CommandBinding Command="Undo" Executed="ExecuteUndo" CanExecute="CanExecuteUndo"/>

然后将RichTextBox的Content设置为类似

的内容

{Binding myUndoManager.CurrentContent, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}

myUndoManager是一个类型为UndoManager类的DependencyProperty。您需要实现此类并从DependencyObjectINotifyPropertyChanged继承它。在此课程中,CurrentContent是一个DependencyProperty,可以显示正确的内容,PropertyChanged事件处理RichTextBox Content的每个更改。 (您可以向该类添加一个集合,并且每次调用此事件时,都会向该集合添加一个新项。此集合的项类型可能具有一些属性,如TextDifferences,ActionType,...)< / em>的

然后剩下的就是在代码中实现CanExecuteUndoExecuteUndo的正文。 e.CanExecute可以在CanExecuteUndo内设置为true,当且仅当集合不为空时。ExecuteUndo弹出集合中的最后一项并根据其ActionType执行必要的操作)

如果DataContext对象与窗口在同一个类中,请不要忘记将窗口(或RichTextBox)的{Binding RelativeSource={RelativeSource Self}}设置为myUndoManager