Reputation: 2065
here is my Problem, I want to pass the integer 1 when this canvas is pressed. Every time I click the canvas, I get a An unhandled exception of type 'System.InvalidCastException' occurred in GalaSoft.MvvmLight.dll. Now I could make my life easier and just do the RelayCommand to accept a String instead of int but for the sake of learning. How would i go about doing it this way,
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding ButtonPress}"
CommandParameterValue="1"
</i:EventTrigger>
</i:Interaction.Triggers>
Upvotes: 3
Views: 1773
Reputation: 27632
You can pass datatypes other than string to the command using the following syntax:
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding ButtonPress}">
<cmd:EventToCommand.CommandParameterValue>
<s:Int32>1</s:Int32>
</cmd:EventToCommand.CommandParameterValue>
</cmd:EventToCommand>
</i:EventTrigger>
Add the flowing namespace declaration for s:
xmlns:s="clr-namespace:System;assembly=mscorlib"
Upvotes: 1
Reputation: 6662
You just found a limitation of the generic casting. I am sorry about this. I will try to find a better way to handle simple values in a further version (maybe with some reflection to check if the Parse method is present on the type) and opened a bug in my backlog. In the mean time, please use RelayCommand and do the parsing yourself.
Cheers, Laurent
Upvotes: 4