使用 MVVM 模式 C# 进行实时编辑
live editing using MVVM pattern C#
我目前正在开发一种工具来可视化 WPF 应用程序中的某些模型。
我的一个问题是 "live edition" 使用 MVVM 模式的问题。
在下面显示的屏幕中,我有一个带有面板的主窗口,其中包括 MonoGame 渲染,使用:https://github.com/ShyroFR/MonoGame.Interop
问题是,当我要打开 "Edit" window 上的 on/off 开关或其他控件时,我希望在 MainWindow 上进行更改。
如果我选择验证更改,好的,没问题,将进行更改,但如果我取消版本,以前的版本应该会再次返回。 (基本上只要先存档就可以了。。。)
感谢您的帮助,祝您愉快,新年快乐:)
您应该考虑实现一个像 IEditableObject
或 IRevertibleChangeTracking
这样的接口。两者都有助于概念化还原更改的概念。关于 this answer.
的精彩讨论
也就是说,两者仍然需要更深入地思考如何处理取消更改的内部机制。我认为主要阵营是'use an immutable object approach'和'action tracking'。两者各有好处 trade-offs.
命令处理器模式:http://wiki.hsr.ch/APF/files/CommandProcessor.pdf is a variation of the command pattern from the "Gang of Four" Design Patterns本书。
这是创建 'command' 对象的好方法(它还包含有关如何 'undo/inverse' 特定 'command' 的说明,这样您就可以存储在堆栈中(无论你想要什么深度)可能的 'undo' 操作数。(你可以将其与你的 MVVC 模式融合)
command pattern 也是为此而设计的,但我发现 'Command Processor Pattern' 更多 'clear' 是关于如何实际实施的。 ('Command Pattern' 似乎让你自己去实现。)
我目前正在开发一种工具来可视化 WPF 应用程序中的某些模型。
我的一个问题是 "live edition" 使用 MVVM 模式的问题。
在下面显示的屏幕中,我有一个带有面板的主窗口,其中包括 MonoGame 渲染,使用:https://github.com/ShyroFR/MonoGame.Interop
问题是,当我要打开 "Edit" window 上的 on/off 开关或其他控件时,我希望在 MainWindow 上进行更改。 如果我选择验证更改,好的,没问题,将进行更改,但如果我取消版本,以前的版本应该会再次返回。 (基本上只要先存档就可以了。。。)
感谢您的帮助,祝您愉快,新年快乐:)
您应该考虑实现一个像 IEditableObject
或 IRevertibleChangeTracking
这样的接口。两者都有助于概念化还原更改的概念。关于 this answer.
也就是说,两者仍然需要更深入地思考如何处理取消更改的内部机制。我认为主要阵营是'use an immutable object approach'和'action tracking'。两者各有好处 trade-offs.
命令处理器模式:http://wiki.hsr.ch/APF/files/CommandProcessor.pdf is a variation of the command pattern from the "Gang of Four" Design Patterns本书。
这是创建 'command' 对象的好方法(它还包含有关如何 'undo/inverse' 特定 'command' 的说明,这样您就可以存储在堆栈中(无论你想要什么深度)可能的 'undo' 操作数。(你可以将其与你的 MVVC 模式融合)
command pattern 也是为此而设计的,但我发现 'Command Processor Pattern' 更多 'clear' 是关于如何实际实施的。 ('Command Pattern' 似乎让你自己去实现。)