UWP/WinRT: 如何在文本框上启用撤消挂钩?

UWP/WinRT: How to enable undo hooks on a TextBox?

TextBox class 已经支持撤消,因为它在上下文菜单中存在并起作用。

我想实现每个常见文档编辑器(如 Microsoft Word)中的 undo/redo 按钮。当它们没有可采取的操作时,它们将被禁用,并且当有 undo/redo 堆栈要移动时,按下按钮将导致文本框的内容撤消和重做。

查看 TextBox API,似乎没有提及如何挂接到撤消数据。唯一的讨论是在上下文菜单中提到撤消。

如何在 TextBox 上实现 undo/redo 挂钩?

如果它有所作为,我目前正在使用 C++/CX 进行编码。

你当然可以通过TextChanged事件手动记录历史。撤消命令用于显示先前的输入。挂钩到控件似乎是不可能的。

处理来自 TextBox 的 ContextMenuOpening 事件,您可以通过自己的命令修改 Popup,例如您自己的 undo/redo 历史记录。

一个很好的示例:https://code.msdn.microsoft.com/windowsapps/Context-menu-sample-40840351 也适用于 UWP。