Catel从5.12.4升级到5.12.15后视图EventToCommand行报运行时错误
报错根因
Catel在5.12.4 ~ 5.12.15版本迭代中调整了EventToCommand的继承体系:旧版本EventToCommand继承自微软原生System.Windows.Interactivity.TriggerAction,可以直接放在i:EventTrigger的集合中;新版本EventToCommand默认改为继承Catel自有触发器基类,所以无法放入微软原生的TriggerActionCollection集合,触发类型不匹配报错。
修复方案
以下两种方案二选一即可:
- 方案一:替换为Catel原生触发器体系(全平台兼容)
将XAML中原生的i:Interaction相关标签替换为Catel提供的实现即可,示例代码如下:
<catel:Interaction.Triggers> <catel:EventTrigger EventName="你的目标事件名"> <catel:EventToCommand Command="{Binding 你的命令绑定}" /> </catel:EventTrigger> </catel:Interaction.Triggers>
只需确保你的XAML头部已经声明了catel前缀对应的Catel.MVVM命名空间即可,不需要额外安装其他包。
- 方案二:安装兼容包保留原有写法(仅支持WPF平台)
如果不想修改现有XAML代码,可直接安装Catel官方提供的兼容包Catel.MVVM.Interactivity,安装完成后原有的i:Interaction.Triggers包裹catel:EventToCommand的写法可正常运行,无需做任何代码调整。
内容的提问来源于stack exchange,提问作者user_pv
相关产品推荐
相关产品推荐

