我的WPF应用程序中有一个报表部分,其中包含一些不同的WPF页面。我需要我的报告页面可以由用户编辑。每个报告页面包含不同的Textbox和RichTextBox控件。
每当更改某个控件的值时,如果我在键盘上按ctrl + z和ctrl + y,则仅当控件处于聚焦状态时,才会执行撤消和重做操作。
是否有任何方法可以扩展这些组合键的功能,以在页面上所有现有控件上执行撤消和重做过程而无需关注它们?
答案 0 :(得分:0)
如果您将效果锁定在command pattern下,则可以自己处理撤消/重做事件。只要所涉及的wpf控件绑定到已完成/撤消/重做的数据即可。这样就可以了。
答案 1 :(得分:0)
您可以使用蛮力方法。
假设您正在使用MVVM(如果不使用MVVM,则应该学习并使用它)。
在视图模型中进行适当更改的句柄,并通过将整个视图模型序列化为视图模型的集合在前后保持不变。每个状态一个。然后,您可以在该集合中向后进行迭代,以返回并重新应用。
这相对容易实现,但缺点是重做之间可能丢失更改。
您可以通过增加一些复杂性来改进它。保留属性名称,每个属性更改的旧值和新值。