我有一个包含以下内容的文本框:
<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());
}
我不明白这是什么问题。
最佳答案
您的 View 模型方法有两个参数,但您只传递了一个。
要么更改 View 以传递 $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)]" />
关于c# - 参数未绑定(bind)的 Caliburn.Micro Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255147/