我正在使用转换器检查字符串长度是否大于0。 如果它更大,我会返回true,否则为假。
一切都很好。但我想知道这是否是转换器的正确方法?
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool error = false;
if (value != null)
{
if (value.ToString().Length > 0)
{
error = true;
}
else
{
error = false;
}
}
return error;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("IsNullConverter can only be used OneWay.");
}
答案 0 :(得分:6)
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string str = value as string;
return !String.IsNullOrEmpty(str);
}
答案 1 :(得分:2)
这是使用转换器的正确方法,是的。但我可能会使用这样的东西:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value != null && value.ToString().Length > 0);
}
修改强>:
根据其他回复,您还可以使用以下方法:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !string.IsNullOrEmpty(value as string);
}
如果您不希望非字符串对象返回true
答案 2 :(得分:2)
所有其他解决方案的问题在于它们正在调用所有对象都支持的ToString()
。但是我相信他/她不希望非字符串对象返回true。如果是这种情况,那么这样做:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !string.IsNullOrEmpty(value as string);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException("IsNullConverter can only be used OneWay.");
}
答案 3 :(得分:1)
这种方法怎么样:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (!string.IsNullOrEmpty(value as string));
}