在MVVM Light CommandParameter值中进行转换

时间:2010-03-30 04:11:32

标签: silverlight mvvm mvvm-light

这是我的问题,我想在按下此画布时传递整数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>

2 个答案:

答案 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"