2010-03-30 94 views
3

这是我的问题,我想在按下此画布时传递整数1。每次点击画布时,我都会在GalaSoft.MvvmLight.dll中发生一个类型为“System.InvalidCastException”的未处理异常。现在,我可以让我的生活更轻松,只需执行RelayCommand即可接受String而不是int,但为了学习。我会如何做这种方式,在MVVM Light中投射CommandParameterValue

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="MouseLeftButtonDown"> 
     <cmd:EventToCommand Command="{Binding ButtonPress}" 
       CommandParameterValue="1" 
       </i:EventTrigger> 
    </i:Interaction.Triggers> 

回答

4

你刚发现的一般铸造的限制。对此我很抱歉。我将尝试找到一种更好的方式来处理更高版本中的简单值(也许通过一些反射来检查类型中是否存在Parse方法)并在我的待办事项中打开一个错误。同时,请使用RelayCommand并自己进行解析。

干杯, 洛朗

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" 
+0

这个作品为int,但是当我尝试使用 false它跌倒了(它通过1或0) – Damian 2011-01-29 22:49:27