0

WatermarkTextBoxを使用していて、その値をビューモデルの整数プロパティにバインドしています。重要なのは、値が設定されていない場合、WatermarkTextBoxは透かしを表示する必要がありますが、値が設定されていない場合(ビューが表示されている場合など)に整数にバインドされるとすると、0が表示されます。

OneWayToSource双方向バインディングが必要なため、使用できません。何か案が?

4

1 に答える 1

3

コンバーターを使用できます。値が0の場合、コンバーターは空の文字列を返し、透かしを表示します。0でない場合は、数値の文字列表現を返します。

public class Int32ToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int v = (int)value;
        if (v == 0)
            return string.Empty;
        return v.ToString();
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string s = (string)value;
        if (string.IsNullOrEmpty(s))
            return 0;
        return int.Parse(s);
    }
}

もう1つのオプションは、プロパティをint?Nullable<int>)に変更し、その初期値をnullに設定することです。

于 2012-06-07T18:52:01.683 に答える