Как я могу привести объект к int в конвертере? - PullRequest
4 голосов
/ 27 мая 2009

Я сдаюсь, как мне это разыграть?

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;
    }
}

Ответы [ 6 ]

3 голосов
/ 27 мая 2009

Оба Convert.ToInt32 или Int32.Parse должны работать ... Если они не работают, тогда значение определенно не является целым;)
Попробуйте установить точку останова в вашем конвертере, чтобы посмотреть значение, оно может показать вам, почему оно не работает

2 голосов
/ 27 мая 2009

Если значение на самом деле является строковым объектом (с содержимым, представляющим целочисленное значение), это дает минимальные издержки:

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

Convert.ToInt32 должен иметь возможность обрабатывать почти все, что можно преобразовать в int, например строку, содержащую цифры или любой числовой тип в пределах диапазона, который может обрабатывать int.

0 голосов
/ 06 августа 2018
int amount;
if(int32.TryParse((string)value,out amount)
{
   if(amount>=35)
    {
        return true;
    }
    else
    {
      return false;
    }
}
else
{
  return false;
}

Это самый безопасный способ, я думаю!

0 голосов
/ 06 августа 2018

Ответ в основном прост. Поскольку IValueConverter имеет сам метод с именем Convert, вы просто не можете просто использовать объект Convert.

Но если вы добавите правильный префикс, он сработает:

int amount = System.Convert.ToInt32(value);
0 голосов
/ 30 октября 2017

Если значение является объектом, ToString() лучше преобразовать в строку перед синтаксическим анализом в Int int amount = Int32.Parse(value.ToString());

0 голосов
/ 27 мая 2009

Поставьте точку останова на открывающей скобке вашего метода Convert. Запустите ваше приложение в режиме отладки. При достижении точки останова анализируется фактический тип значения . Делать актеры. Если значением является строка, приведите его к строке, а затем проанализируйте результат, чтобы получить целое число. Запустите программу еще раз. Это должно сработать на этот раз.

...