繁体   English   中英

自定义UIContainer的RichTextBox撤消过程

[英]RichTextBox Undo process for custom UIContainer

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

首先,将命令绑定到撤消按钮。 编写类似于以下内容的CommandBinding<CommandBinding Command="Undo" Executed="ExecuteUndo" CanExecute="CanExecuteUndo"/>

然后将RichTextBox的Content设置为这样

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM