Кастинг в MVVM Light CommandParameterValue - PullRequest
3 голосов
/ 30 марта 2010

вот моя проблема, я хочу передать целое число 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 ]

4 голосов
/ 30 марта 2010

Вы только что нашли ограничение общего кастинга. Я сожалею об этом. Я постараюсь найти лучший способ обработки простых значений в следующей версии (возможно, с некоторым размышлением, чтобы проверить, присутствует ли метод Parse в типе) и открыл ошибку в моем бэклоге. В то же время, пожалуйста, используйте RelayCommand и выполните анализ самостоятельно.

Ура, Laurent

1 голос
/ 31 августа 2010

В команду можно передать типы данных, отличные от строки, используя следующий синтаксис:

<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"
...