在 WPF 中撤消/重做?

发布于 2024-07-17 23:50:23 字数 43 浏览 7 评论 0原文

WPF 是否提供了处理撤消/重做的框架? 如果没有,常见的方法是什么?

Does WPF provide a framework to handle undo/redo? If not, what's a common way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2024-07-24 23:50:23

我已经为 WPF 应用程序实现了撤消/重做,并最终将我的撤消/重做代码发布到 http://muf.codeplex .com/

您还可以通过 NuGet 获取它。 只需查找“MUF”或“受监控的撤消框架”即可。 它包括对 Silverlight 4.0 以及 .NET 3.5、4.0 和 WP7 的支持。

欢迎在 codeplex 网站 ( http://muf.codeplex.com/ ) 上提出意见和问题。 您还可以在那里找到完整的文档和示例应用程序。

I've implemented undo / redo for a WPF application and ended up publishing my undo / redo code to http://muf.codeplex.com/.

You can also get it via NuGet. Just look for "MUF" or "Monitored Undo Framework". It includes support for Silverlight 4.0, as well as .NET 3.5, 4.0, and WP7.

Comments and questions are welcome on the codeplex site ( http://muf.codeplex.com/ ). You'll also find complete documentation and sample apps there.

溺渁∝ 2024-07-24 23:50:23

从 .NET 3.0 开始,这是快速获取本地化名称、按键手势和某些功能的方法:

<MenuItem Command="ApplicationCommands.Redo"/>
<MenuItem Command="ApplicationCommands.Undo"/>

但是,如果您不进行进一步操作,每个 TextBox 都会维护其自己的撤消/重做列表,并且重做/撤消命令仅影响该项目目前有焦点。
必须有某种方法可以切换到单个窗口/应用程序范围的撤消/重做列表,但我刚刚开始搜索,大多数情况下我找到了“如何自己编码”文章。

但是使用附加属性的技术,描述了 这里,似乎很有前途,并且可能很容易/稳定。

As of .NET 3.0, this is the way to get the localized Name, Key Gesture and some functionality quick:

<MenuItem Command="ApplicationCommands.Redo"/>
<MenuItem Command="ApplicationCommands.Undo"/>

However, without further action on your part each TextBox maintains it's own Undo/Redo list and the Redo/Undo Command only affects the item currently having the focus.
There must be some way to switch to a single, window/application wide undo/redo list, but I have just started to search and mostly I found "How to code it yourself" articles.

But a technique using attached properties, described here, seems very promising and could be easy/stable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文