这是我的问题,我想在按下此画布时传递整数1。每次单击画布时,我都会在GalaSoft.MvvmLight.dll中发生一个未处理的类型'System.InvalidCastException'的异常。现在我可以让我的生活变得更轻松,只是为了学习而让RelayCommand接受String而不是int。我将如何以这种方式去做,
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding ButtonPress}"
CommandParameterValue="1"
</i:EventTrigger>
</i:Interaction.Triggers>
答案 0 :(得分:4)
您刚刚发现了通用投射的限制。对此我很抱歉。我将尝试找到一种更好的方法来处理另一个版本中的简单值(可能有一些反射来检查类型中是否存在Parse方法)并在我的backlog中打开了一个错误。同时,请使用RelayCommand并自行解析。
干杯, 劳伦
答案 1 :(得分:1)
您可以使用以下语法将除字符串以外的数据类型传递给命令:
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding ButtonPress}">
<cmd:EventToCommand.CommandParameterValue>
<s:Int32>1</s:Int32>
</cmd:EventToCommand.CommandParameterValue>
</cmd:EventToCommand>
</i:EventTrigger>
为s:
添加流动的名称空间声明xmlns:s="clr-namespace:System;assembly=mscorlib"