Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用动作<;T1、T2>;当在Messenger中注册方法时_C#_Wpf_Mvvm_Mvvm Foundation - Fatal编程技术网

C# 使用动作<;T1、T2>;当在Messenger中注册方法时

C# 使用动作<;T1、T2>;当在Messenger中注册方法时,c#,wpf,mvvm,mvvm-foundation,C#,Wpf,Mvvm,Mvvm Foundation,我使用的是mvvm模式,下面是下一种情况。 例如,存在一种方法: void LockPressed(KeyEventArgs e) { // Code } 我在这里登记: App.Messenger.Register("LockPressed", (Action<KeyEventArgs>)LockPressed); 逻辑上的重新注册操作应如下所示: App.Messenger.Register("LockPressed",

我使用的是mvvm模式,下面是下一种情况。 例如,存在一种方法:

    void LockPressed(KeyEventArgs e)
    {
       // Code
    }
我在这里登记:

    App.Messenger.Register("LockPressed", (Action<KeyEventArgs>)LockPressed);
逻辑上的重新注册操作应如下所示:

    App.Messenger.Register("LockPressed", (Action<KeyEventArgs,string>)LockPressed);
App.Messenger.Register(“锁定按下”),(操作)锁定按下);
但是没有成功。我有一个错误:

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

有什么办法可以解决吗?

这应该可以:

App.Messenger.Register("LockPressed", (KeyEventArgs eventArgs)=>LockPressed(eventArgs, "name"));
还是更复杂

App.Messenger.Register("LockPressed", (KeyEventArgs eventArgs)=>
  {
    string name = GetName();
    LockPressed(eventArgs, name);
  });

Action lockPressedAction=(eventargs)=>LockPressed(eventargs,“g”);
应用程序Messenger.Register(“锁定按下”,锁定按下动作);

代理“操作”不执行1arguments@MCv如果您显式地将其定义为
Action lockPressedAction=(eventargs)=>LockPressed(eventargs,“g”)App.Messenger.Register(“锁定按下”,锁定按下动作)您不需要围绕事件参数的妄想<代码>寄存器(“锁定按下”,事件参数=>锁定按下(事件参数,名称”)应该可以正常工作。(如果需要一个以上的参数),如果可以,那就更容易定制“<代码> Engasgs<代码> >,将聚合<代码> KeyEventArgs < /代码>和<代码>名称< /代码> @ JHOF MVVM基金会。
App.Messenger.Register("LockPressed", (KeyEventArgs eventArgs)=>
  {
    string name = GetName();
    LockPressed(eventArgs, name);
  });
Action<KeyEventArgs> lockPressedAction = (eventargs) => LockPressed(eventargs,"g");
App.Messenger.Register("LockPressed", lockPressedAction);