[英]Textbox not setting the value as null when the user cleans the text field in WPF
我有下一個文本框:
<TextBox FontSize="10">
<TextBox.Text>
<Binding Path="EstatusAdministrativo" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<validations:IsRequiredValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
此文本框綁定到 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 的值未設置為 null。 當我清理文本框時,它不會觸發 set 方法。 為什么會發生這種情況,我該如何解決?
驗證規則失敗時不會設置 source 屬性,除非您將ValidationStep
屬性設置為UpdatedValue
:
<validations:IsRequiredValidationRule ValidationStep="UpdatedValue" />
這將導致在設置源屬性后運行驗證規則。 您可以在此博客文章中閱讀有關此內容的更多信息。
如果您需要更多控制,您應該擺脫驗證規則並在您的視圖模型類中實現INotifyDataErrorInfo接口。
您可能需要設置ValidatesOnDataErrors = false
。 如果輸入的值未驗證,這可能會阻止文本框更新屬性值。
代替
return new ValidationResult(true, null);
你應該打電話
return ValidationResult.ValidResult;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.