TargetNullValue =''无法使用WPF C#

时间:2018-07-14 11:44:10

标签: c# wpf xaml data-binding mvvm-light

我有以下文本框,不确定为什么格式化不会正常,但是您明白了。

<TextBox LostFocus="TextBox_LostFocus">
    <TextBox.Text>
        <Binding Path="InputVolts" 
                 TargetNullValue='' 
                 FallbackValue=''>
            <Binding.ValidationRules>
                <u:NonEmptyStringValidator/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

此文本框绑定到以下属性:

public int? InputVolts
{
     get { return _InputVolts; }
     set { Set(ref _InputVolts, value);}
}

在我的表单中,如果我在文本框中输入数字240,则视图模型将使用该值进行更新。如果我尝试从文本框中删除240,则视图模型不会相应地更新InputVolts属性。

我知道以下Post

中的TargetNullValue解决方案

编辑: 好的,我发现了问题,我的NonEmptyStringValidator导致了此问题。我想在文本框中仍然保留此验证规则。无论如何,是否有必要对此进行调整以保持验证规则,但使文本框在删除后返回空值?

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        ValidationResult validationResult = new ValidationResult(false, "Value cannot be empty.");
        if (value != null)
        {
            string valueAsString = value as string;
            if (valueAsString.Length > 0)
                validationResult = ValidationResult.ValidResult;
        }
        return validationResult;
    }

我也尝试使用FallBackValue,但似乎没有任何效果。任何帮助将不胜感激!

谢谢

1 个答案:

答案 0 :(得分:1)

count可能会阻止更新为空字符串。