1

文字列の長さが0より大きいかどうかを確認するためにコンバーターを使用しています。大きい場合は true を返し、それ以外の場合は false を返します。

すべてが正常に機能しています。しかし、これがコンバーターの正しい方法であるかどうか疑問に思っていましたか?

    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

4 に答える 4

6
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    string str = value as string;
    return !String.IsNullOrEmpty(str);
}
于 2012-07-24T08:20:46.743 に答える
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

于 2012-07-24T08:12:25.297 に答える
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."); 
} 
于 2012-07-24T08:28:33.393 に答える
1

このアプローチはどうですか:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    return (!string.IsNullOrEmpty(value as string));
}
于 2012-07-24T08:21:45.807 に答える