gpt4 book ai didi

c# - 当用户清理 WPF 中的文本字段时,文本框未将值设置为 null

转载 作者:行者123 更新时间:2023-12-02 07:45:17 25 4
gpt4 key购买 nike

我有下一个文本框:

<TextBox FontSize="10">
<TextBox.Text>
<Binding Path="EstatusAdministrativo" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<validations:IsRequiredValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

此文本框绑定(bind)到 ViewModel 中的一个变量,如下所示:

private string _EstatusAdministrativo;
public string EstatusAdministrativo {
get {
return _EstatusAdministrativo;
}
set {
_EstatusAdministrativo = value;
OnPropertyChanged();
}
}

文本框内部的验证如下所示:

public class IsRequiredValidationRule: ValidationRule {
public override ValidationResult Validate(object value, CultureInfo cultureInfo) {
string strValue = Convert.ToString(value);
if (string.IsNullOrWhiteSpace(strValue))
return new ValidationResult(false, $ "Por favor llenar este campo.");
return new ValidationResult(true, null);
}
}

当我删除文本框中的所有字符时,EstatusAdministrativos 的值未设置为空。当我清理文本框时,它不会触发 set 方法。为什么会发生这种情况以及如何解决?

最佳答案

当验证规则失败时,不会设置源属性,除非您将 ValidationStep 属性设置为 UpdatedValue:

<validations:IsRequiredValidationRule ValidationStep="UpdatedValue" />

这将导致验证规则在设置源属性之后运行。您可以在this中阅读更多相关信息。博客文章。

如果您需要更多控制,您应该摆脱验证规则并实现 INotifyDataErrorInfo View 模型类中的接口(interface)。

关于c# - 当用户清理 WPF 中的文本字段时,文本框未将值设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60554822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com