Caliburn.Micro动作参数不绑定

时间:2013-04-27 17:46:59

标签: c# xaml caliburn.micro

我有一个包含以下内容的文本框:

<i:Interaction.Triggers>
 <i:EventTrigger EventName="KeyUp" >                                               
     <cal:ActionMessage MethodName="OnKeyUp" >
          <cal:Parameter Value="$eventArgs"/>
     </cal:ActionMessage>
 </i:EventTrigger>

如果我运行此命令,则会生成一条错误消息,指出“找不到方法OnKeyUp的目标”。如果我从消息和方法中删除参数,那么它运行正常。

这是方法。

public void OnKeyUp(object sender, KeyEventArgs e) {
        MessageBox.Show(e.Key.ToString());
    }

我不明白这是什么问题。

1 个答案:

答案 0 :(得分:11)

您的视图模型方法需要两个参数,但您只传递一个参数。

更改视图以传递$source

<i:Interaction.Triggers>
    <i:EventTrigger EventName="KeyUp">
        <cal:ActionMessage MethodName="OnKeyUp" >
           <cal:Parameter Value="$source" />
           <cal:Parameter Value="$eventArgs" />
        </cal:ActionMessage>
    </i:EventTrigger>
</i:Interaction.Triggers>

或更改您的方法以获取事件参数:

public void OnKeyUp(KeyEventArgs e) { ... }

你也可以使用更好的速记:

<TextBox cal:Message.Attach="[Event KeyUp] = [Action OnKeyUp($source, $eventArgs)]" />