4

我放弃了,这个怎么投?

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

6 回答 6

2

两者Convert.ToInt32Int32.Parse都应该工作......如果他们没有,那么这个值绝对不是一个 int ;)
尝试在你的转换器中放置一个断点来观察这个值,它可能会告诉你为什么它不起作用

于 2009-05-27T12:31:38.740 回答
2

如果该值实际上是一个字符串对象(其内容表示一个整数值),则开销最小:

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

Convert.ToInt32应该能够处理大多数可能转换为 的内容,例如包含数字的字符串或在可以处理int的范围内的任何数字类型。int

于 2009-05-27T12:37:58.477 回答
0

在 Convert 方法的左括号处放置一个断点。以调试模式启动您的应用程序。当断点被命中时,分析value的实际类型。做演员。如果值是字符串,则将其转换为字符串,然后解析结果以获取整数。再次运行程序。这次应该可以了。

于 2009-05-27T12:32:53.417 回答
0

如果该值是一个对象,ToString()最好在解析之前转换为字符串Int int amount = Int32.Parse(value.ToString());

于 2017-10-30T14:24:19.140 回答
0

答案基本上很简单。因为IValueConverter它本身有一个名为的方法Convert,所以你不能Convert像那样简单地使用对象。

但是,如果您添加正确的前缀,它会起作用:

int amount = System.Convert.ToInt32(value);
于 2018-08-06T09:59:13.300 回答
0
int amount;
if(int32.TryParse((string)value,out amount)
{
   if(amount>=35)
    {
        return true;
    }
    else
    {
      return false;
    }
}
else
{
  return false;
}

我认为这是最安全的方式!

于 2018-08-06T11:07:35.970 回答