1

我已经实现了一个自定义撤消/重做堆栈,我试图让它与 WPF 文本框一起工作。

我已经关闭了内置的撤消机制,并在 Ctrl+Z 上连接了我的自定义撤消。一切正常,接受 TextBox 中的插入符号总是在每次撤消/重做时移动到索引 0。问题是如何解决这个问题?

我尝试在 TextBox 上有一个自定义行为,它侦听 TextChanged 并本地化文本字符串中的最后一次更改。但这只有在您开始连续多次输入同一个字母时才有效。我的方法失效了。

我理想中想要的是某种只对 TextBox.Text 属性进行实际更改的行为。就像现在一样,每次撤消都会完全更新它,即使它只是被删除的最后一个输入的字母。这当然不足为奇,因为它在我的 PresentationModel 上侦听 Text-property,它在 Undo 上触发 PropertyChanged。

但是,如果有一些更详细的方法可以准确地告诉属性值发生了什么变化,那就是只有一个或几个字母在字符串值中插入/删除。然后 TextBox 可以只改变它而不必刷新它的整个文本值。有没有这样的方式告诉 TextBox 已经准备好,或者是否可以制作一个以这种方式运行的自定义 TextBox?这样就可以精确定位新插入符号的确切位置,而无需在每次属性更改更新时直接回到 0!

4

0 回答 0