0

我正在使用WatermarkTextBox并将其值绑定到 View Model 整数属性。问题是:我需要如果没有设置值,那么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);
    }
}

另一种选择是将属性更改为int?( Nullable<int>),并将其初始值设置为 null。

于 2012-06-07T18:52:01.683 回答