WPF TextBox中的自定义撤消/重做具有适当的插入符号移动

时间:2011-07-20 14:48:11

标签: wpf textbox undo-redo

我已经实现了一个自定义的Undo / Redo堆栈,我试图让它与WPF TextBox一起使用。

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

我已经尝试在TextBox上调用TextChanged并在本地化文本字符串中的最后一个更改。但这只能起作用,除非你连续多次开始输入相同的字母。我的方法崩溃了。

我理想的是某种行为只对TextBox.Text属性进行实际更改。因为它现在是完全更​​新的每个撤消,即使它只删除最后输入的字母。这当然并不令人惊讶,因为它侦听我的PresentationModel上的Text-property,它在Undo上触发PropertyChanged。

但是如果有一些更精细的方法来确切地告诉属性值发生了什么变化,只有一个或几个字母在字符串值中插入/删除,那么这不是很好。然后TextBox只能更改它而不必刷新其整个Text值。是否有任何这样的方式告诉TextBox这个或者是否可以制作一个以这种方式运行的自定义TextBox?那么就可以精确定位新插入符号的确切位置,而不必为每次propertychange-update直接返回0!

0 个答案:

没有答案