Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF C#撤消重做_C#_.net_Wpf - Fatal编程技术网

WPF C#撤消重做

WPF C#撤消重做,c#,.net,wpf,C#,.net,Wpf,我必须在WPF中为数字编辑器(如textbox)执行UNDO-REDO实现。 我正在使用infragistics xamNumericEditor控件。我怎么开始?哪种方法最好。我在网上搜索过。发现有纪念品和命令模式。哪一个最好 > P>文章涵盖了实现撤销/重做模式的3种不同方式,包括使用MeMeNTO和命令模式。 您可能想考虑UI级别是否是实现撤销/重做的正确位置。这取决于您是跟踪数据的更重要更改,还是仅在UI中进行短期编辑。在后一种情况下,一旦移动到另一个控件,您通常不关心是否会丢失撤消状态

我必须在WPF中为数字编辑器(如textbox)执行UNDO-REDO实现。
我正在使用infragistics xamNumericEditor控件。我怎么开始?哪种方法最好。我在网上搜索过。发现有纪念品和命令模式。哪一个最好

> P>文章涵盖了实现撤销/重做模式的3种不同方式,包括使用MeMeNTO和命令模式。

您可能想考虑UI级别是否是实现撤销/重做的正确位置。这取决于您是跟踪数据的更重要更改,还是仅在UI中进行短期编辑。在后一种情况下,一旦移动到另一个控件,您通常不关心是否会丢失撤消状态


如果您纯粹是在编辑上下文中查找本地撤消/重做(例如撤消剪切或删除操作),则可以使用和在标准文本框控件(可能还有Infragistics控件)上免费获得该操作。尝试将它们附加到菜单项或按钮上,并尝试它们的工作方式。

您可能会发现受监视的撤消框架非常有用


它不使用“自上而下”的命令模式,而是在更改发生时监视更改,并允许您将一个委托放在撤消堆栈上,以反转更改。你可以在codeplex网站上找到更多信息和文档。

如果你在.NET 4上,你可以使用一个tuple列表来创建某种更改历史记录。。。tuple,当然,您可以创建一个类或结构=P