我正在使用WatermarkTextBox,我将它的值绑定到View Model整数属性。问题是:我需要,如果没有设置值,那么WatermarkTextBox必须显示水印,但是,如果没有设置值(如显示视图时)它绑定到整数,则显示0。
我无法使用OneWayToSource
因为我需要双向绑定。有什么想法吗?
答案 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。