我在WPF中有RichTextBox,其中包含InlineUIContainer
和一些自定义对象。如何允许该UIContainer的撤消事件?
答案 0 :(得分:-1)
首先将命令绑定到撤消按钮。
写一个与此类似的CommandBinding:
<CommandBinding Command="Undo" Executed="ExecuteUndo" CanExecute="CanExecuteUndo"/>
然后将RichTextBox的Content
设置为类似
{Binding myUndoManager.CurrentContent, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}
myUndoManager
是一个类型为UndoManager
类的DependencyProperty。您需要实现此类并从DependencyObject
和INotifyPropertyChanged
继承它。在此课程中,CurrentContent
是一个DependencyProperty
,可以显示正确的内容,PropertyChanged
事件处理RichTextBox Content
的每个更改。 (您可以向该类添加一个集合,并且每次调用此事件时,都会向该集合添加一个新项。此集合的项类型可能具有一些属性,如TextDifferences,ActionType,...)< / em>的
然后剩下的就是在代码中实现CanExecuteUndo
和ExecuteUndo
的正文。 (e.CanExecute
可以在CanExecuteUndo
内设置为true,当且仅当集合不为空时。ExecuteUndo
弹出集合中的最后一项并根据其ActionType
执行必要的操作)
如果DataContext
对象与窗口在同一个类中,请不要忘记将窗口(或RichTextBox)的{Binding RelativeSource={RelativeSource Self}}
设置为myUndoManager
。