c# - 参数未绑定(bind)的 Caliburn.Micro Action

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

我不明白这是什么问题。

最佳答案

您的 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/

相关文章:

c# - Windows Phone 应用程序退出通知

c# - Caliburn 微 : Disable button on form validation error

c# - 将新数据保存到数据集中

c# - 通过将字符串类型的列表设置为字典来创建字典

c# - 如何将我的用户控件内容控件中的属性绑定(bind)到我的 View 模型中的属性?

wpf - WPF MVVM ListBox 中的多项选择

c# - `Where` 子句返回空列表,即使逻辑测试是 `true`

c# - 正则表达式 : single word

c# - 是否可以为存储帐户中的所有容器获取单一共享访问签名?

c# - 文本 block 的数据触发器