1

我正在使用 mvvm 模式,并且有下一种情况。例如存在一个方法:

    void LockPressed(KeyEventArgs e)
    {
       // Code
    }

我在这里注册它:

    App.Messenger.Register("LockPressed", (Action<KeyEventArgs>)LockPressed);

那个工作正常。但是如果我需要修改方法,它需要两个参数:

    void LockPressed(KeyEventArgs e, string name)
    {
       //Code
    }

逻辑上重新注册操作应如下所示:

    App.Messenger.Register("LockPressed", (Action<KeyEventArgs,string>)LockPressed);

但没有成功。我收到一个错误:

错误 CS1503 参数 2:无法从“System.Action”转换为“System.Action”

有什么想法可以解决吗?

4

1 回答 1

2

这应该有效:

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);
于 2017-01-24T10:21:00.230 回答