我正在使用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/

10-14 17:18