2009-05-27 91 views
3

我放弃了,我该如何施展?如何将对象转换为转换器中的int值?

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

两个Convert.ToInt32Int32.Parse应该工作...如果他们不这样做,那么价值肯定不是一个int)
尝试把一个断点在你的转换器,以腕表的价值,它可能显示你为什么不起作用

+0

解析甚至不会编译前转换为字符串。如果对象实现了IConvertible,转换将工作。 – 2009-05-27 12:37:10

+0

你说得对,Parse接受一个字符串,而不是一个对象... – 2009-05-27 12:39:36

0

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

2

如果该值实际上是一个字符串对象(与代表整数值的内容),这给至少开销:

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

Convert.ToInt32应该能够处理大多数东西都可能转换到一个int,就像一个包含数字的字符串,或者是在int可以处理的范围内的任何数字类型。

0

如果该值是一个对象,ToString()是更好地解析到Int int amount = Int32.Parse(value.ToString());