Domanda

qui è il mio problema, io voglio passare l'intero 1 quando si preme questa tela. Ogni volta che clicco la tela, ho un Un'eccezione non gestita di tipo 'System.InvalidCastException' in GalaSoft.MvvmLight.dll. Ora ho potuto fare la mia vita più facile e solo fare il RelayCommand di accettare una stringa invece di int, ma per il bene di apprendimento. Come potrei fare per fare in questo modo,

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

Soluzione

Hai appena trovato una limitazione del getto generico. Mi dispiace per questo. Cercherò di trovare un modo migliore per gestire i valori semplici in un'ulteriore versione (magari con qualche riflessione per verificare se il metodo Parse è presente sul tipo) e ha aperto un bug nel mio portafoglio. Nel frattempo, si prega di utilizzare RelayCommand e fare il parsing da soli.

Saluti, Laurent

Altri suggerimenti

È possibile passare i tipi di dati diversi da stringa al comando utilizzando la seguente sintassi:

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

Aggiungere la dichiarazione dello spazio dei nomi che scorre per s:

xmlns:s="clr-namespace:System;assembly=mscorlib"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top