C# 使用动作<;T1、T2>;当在Messenger中注册方法时
我使用的是mvvm模式,下面是下一种情况。 例如,存在一种方法: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",
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);