Question

Voici mon problème, je veux passer l'entier 1 lorsque cette toile est pressée. Chaque fois que je clique sur la toile, je reçois une Une exception non gérée de type « System.InvalidCastException » a eu lieu dans GalaSoft.MvvmLight.dll. Maintenant, je pourrais me rendre la vie plus facile et juste faire le RelayCommand d'accepter une chaîne au lieu de int, mais pour l'amour de l'apprentissage. Comment puis-je aller à ce faire de cette façon,

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

La solution

Vous venez de trouver une limitation de la coulée générique. Je suis désolé à ce sujet. Je vais essayer de trouver une meilleure façon de gérer les valeurs simples dans une autre version (peut-être avec un peu de réflexion pour vérifier si la méthode Parse est présent sur le type) et a ouvert un bug dans mon carnet. Dans le même temps, s'il vous plaît utiliser RelayCommand et faire vous-même l'analyse syntaxique.

Cordialement, Laurent

Autres conseils

Vous pouvez passer d'autres types de données que chaîne à la commande en utilisant la syntaxe suivante:

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

Ajoutez la déclaration d'espace de noms pour fluide s:

xmlns:s="clr-namespace:System;assembly=mscorlib"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top