首页 > 解决方案 > TargetNullValue = '' 不工作 WPF C#

问题描述

我有以下文本框,不知道为什么格式不会正常,但你明白了。

<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 属性。

我从以下 帖子中了解到 TargetNullValue 解决方案

编辑: 好的,我发现了问题,我的 NonEmptyStringValidator 导致了这个问题。不过,我想在我的文本框中仍然有这个验证规则。无论如何调整它以仍然保留验证规则但在删除时使文本框返回 null ?

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,但似乎没有任何效果。任何帮助将不胜感激!

谢谢,

标签: c#wpfxamldata-bindingmvvm-light

解决方案


<u:NonEmptyStringValidator/>可能会阻止对空字符串的更新。


推荐阅读