0

我有一个将 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;
    }
}
4

0 回答 0