WPF字符串长度转换器

时间:2012-07-24 08:07:55

标签: c# .net wpf ivalueconverter string-length

我正在使用转换器检查字符串长度是否大于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.");
    }

4 个答案:

答案 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));
}