簡體   English   中英

當用戶清理 WPF 中的文本字段時,文本框未將值設置為 null

[英]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 如果輸入的值未驗證,這可能會阻止文本框更新屬性值。

https://docs.microsoft.com/en-us/dotnet/api/system.windows.data.binding.validatesondataerrors?view=netframework-4.8

代替

return new ValidationResult(true, null);

你應該打電話

return ValidationResult.ValidResult;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM