2010-03-30 106 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