Frage

Ich gebe auf, wie kann ich warf das?

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;
    }
}
War es hilfreich?

Lösung

Sowohl Convert.ToInt32 oder Int32.Parse sollte funktionieren ... Wenn sie dies nicht tun, dann wird der Wert ist definitiv kein int;)
Versuchen Sie einen Haltepunkt in Ihrem Konverter setzt den Wert zu sehen, könnte es Ihnen zeigen, warum es nicht funktioniert

Andere Tipps

Wenn der Wert tatsächlich ein String-Objekt ist (mit einem Inhalt, der einen ganzzahligen Wert darstellt), ergibt dies den geringsten Aufwand:

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

Die Convert.ToInt32 sollte in der Lage sein, fast alles zu behandeln, die möglich ist, zu einem int zu konvertieren, wie eine Zeichenfolge Ziffern oder einen beliebigen numerischen Typ enthält, die innerhalb des Bereichs, der ein int verarbeiten kann.

Setzen Sie einen Haltepunkt an der öffnenden Klammer Ihrer Convert-Methode. Starten Sie Ihre Anwendung im Debug-Modus. Wenn der Haltepunkt erreicht die tatsächliche Art von Wert analysiert . Haben die Besetzung. Wenn der Wert ist, wirft Zeichenkette, die es zu bespannen und dann das Ergebnis analysieren, um eine ganze Zahl zu bekommen. Führen Sie das Programm erneut. Es sollte diesmal arbeiten.

Wenn der Wert ein Objekt ist, ToString() besser zu Zeichenfolge konvertieren, bevor Int int amount = Int32.Parse(value.ToString()); Parsen

Die Antwort ist im Grunde einfach. Da die IValueConverter hat sich eine Methode namens Convert kann man nicht einfach uns die Convert Objekt einfach so.

Aber wenn Sie die richtige Vorsilbe hinzufügen es funktioniert:

int amount = System.Convert.ToInt32(value);
int amount;
if(int32.TryParse((string)value,out amount)
{
   if(amount>=35)
    {
        return true;
    }
    else
    {
      return false;
    }
}
else
{
  return false;
}

Das sicherste Weg ist, denke ich!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top