2009-05-27 10 views
3

J'abandonne, comment puis-je diffuser ceci?Comment convertir un objet en int dans un convertisseur?

class AmountIsTooHighConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     //int amount = (int)value; 
     //int amount = (int)(string)value; 
     //int amount = (int)(value.ToString); 
     //int amount = Int32.Parse(value); 
     //int amount = (int)Convert.ChangeType(value, typeof(int)); 
     //int amount = Convert.ToInt32(value); 
     if (amount >= 35) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
} 

Répondre

4

Les deux Convert.ToInt32 ou Int32.Parse devrait fonctionner ... Si elles ne sont pas, alors la valeur est certainement pas un int;)
Essayez de mettre un point d'arrêt dans votre convertisseur pour regarder la valeur, il pourrait montrer vous pourquoi cela ne fonctionne pas

+0

parse même pas compiler. Convert fonctionnera si l'objet implémente IConvertible. –

+0

Vous avez raison, Parse prend une chaîne, pas un objet ... –

+0

Convert.ToInt32() et Int32.Parse n'analyseraient pas * toutes les valeurs comme "2000" ints avec des virgules. Je suggérerais un essai et une capture pour un FormatException – abhilash

0

Mettez un point d'arrêt à la parenthèse ouvrante de votre méthode Convert. Démarrez votre application en mode débogage. Lorsque le point d'arrêt est atteint, analysez le type réel de valeur. Faites le casting. Si la valeur est une chaîne, transformez-la en chaîne, puis analysez le résultat pour obtenir un entier. Exécutez le programme à nouveau. Ça devrait marcher cette fois.

2

Si la valeur est en fait un objet chaîne (avec un contenu qui représente une valeur entière), ce qui donne au moins les frais généraux:

int amount = Int32.Parse((string)value); 

Le Convert.ToInt32 devrait être en mesure de traiter la plupart tout ce qui est possible de convertir à int, comme une chaîne contenant des chiffres ou n'importe quel type numérique qui est dans la plage qu'un int peut gérer.

0

Si la valeur est un objet, ToString() est préférable de convertir en chaîne avant l'analyse syntaxique à Int int amount = Int32.Parse(value.ToString());

+0

Pourriez-vous s'il vous plaît formater votre code en le mettant en surbrillance et en appuyant sur Ctrl + K – WhatsThePoint

Questions connexes