文本框编号绑定

时间:2012-06-07 18:50:10

标签: wpf data-binding mvvm wpf-controls wpftoolkit

我正在使用WatermarkTextBox,我将它的值绑定到View Model整数属性。问题是:我需要,如果没有设置值,那么WatermarkTextBox必须显示水印,但是,如果没有设置值(如显示视图时)它绑定到整数,则显示0。

我无法使用OneWayToSource因为我需要双向绑定。有什么想法吗?

1 个答案:

答案 0 :(得分: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。