要实现的是保存、管理执行过的命令,包括函数与参数。
WPF一般把函数放在每个界面下面,保存执行过的函数,用委托方式更条理与简单。
比如可以设计一条命令类:
Class Command{
public int Arg1{ get; set; }
public string Arg2{ get; set; }
public Action<int, string> Act_Do{ get; set; }
public Action Act_Undo{ get; set; }
public void Do(){
Act_Do?.Invoke(Arg1, Arg2);
}
public void Undo(){
Act_Undo?.Invoke();
}
}
假如已经定义了一个命令管理器CommandManager,并定义了一个Add的方法来添加命令。
在执行命令的地方:
...
int i=1;
string s="s";
doSomething(i, s); // 执行函数,然后把该函数保存到命令管理器
commandManager.Add(
new Command()
{
Arg1 = i,
Arg2 = s,
Act_Do=doSomething,
Act_Undo=...
}
)
...