5

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

<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());
    }

我不明白问题是什么。

4

1 回答 1

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)]" />
于 2013-04-27T18:25:35.670 回答