我正在使用mvvm模式,并且有下一种情况。
例如存在一种方法:
void LockPressed(KeyEventArgs e)
{
// Code
}
我在这里注册:
App.Messenger.Register("LockPressed", (Action<KeyEventArgs>)LockPressed);
那没问题。但是,如果我需要修改方法,则它需要两个参数:
void LockPressed(KeyEventArgs e, string name)
{
//Code
}
逻辑上的resgister操作应如下所示:
App.Messenger.Register("LockPressed", (Action<KeyEventArgs,string>)LockPressed);
但是没有成功。我收到一个错误:
有什么想法可以解决吗?
最佳答案
这应该工作:
App.Messenger.Register("LockPressed", (KeyEventArgs eventArgs)=>LockPressed(eventArgs, "name"));
或更复杂
App.Messenger.Register("LockPressed", (KeyEventArgs eventArgs)=>
{
string name = GetName();
LockPressed(eventArgs, name);
});
或者
Action<KeyEventArgs> lockPressedAction = (eventargs) => LockPressed(eventargs,"g");
App.Messenger.Register("LockPressed", lockPressedAction);
关于c# - 在Messenger中注册方法时使用Action <T1,T2>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41825394/