我有一个将 TargetNullValue 设置为“0.00”的文本框。在初始加载时,窗口显示 0.00,因为绑定属性为空。现在这是我感到困惑的地方:如果我将 TextBox 的值更改为 0.00 以外的任何值以包含空格,然后清除 TextBox,我得到 0.00。如果 TextBox 的值为 0.00,并且我清除了 TextBox,则会得到一个空的 TextBox。即使我总是引发 PropertyChanged 通知,即使支持属性值没有更改,也会发生这种情况。
<TextBox Margin="5" Width="100" MaxLength="6" Text="{Binding FeeToleranceLevel,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
TargetNullValue='0.00',
ValidatesOnDataErrors=True,
Converter={StaticResource ToleranceLvlCapConverter}}"
HorizontalAlignment="Left">
public string FeeToleranceLevel
{
get { return _feeToleranceLevel; }
set
{
if(_feeToleranceLevel != value)
{
_feeToleranceLevel = value;
}
RaisePropertyChanged("FeeToleranceLevel");
}
}
public sealed class ToleranceLvlCapConverter : IValueConverter
{
#region Implementation of IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value != null) && (string.IsNullOrEmpty(value.ToString())))
return null;
return value;
}
}