我正在使用WatermarkTextBox并将其值绑定到 View Model 整数属性。问题是:我需要如果没有设置值,那么WatermarkTextBox必须显示水印,但是,考虑到它在没有设置值时绑定到一个整数(比如显示视图时),那么它显示 0。
我不能使用OneWayToSource
,因为我需要两种方式绑定。任何的想法?
我正在使用WatermarkTextBox并将其值绑定到 View Model 整数属性。问题是:我需要如果没有设置值,那么WatermarkTextBox必须显示水印,但是,考虑到它在没有设置值时绑定到一个整数(比如显示视图时),那么它显示 0。
我不能使用OneWayToSource
,因为我需要两种方式绑定。任何的想法?
您可以使用转换器。如果值为 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。