Ich mache eine Anwendung, wo der Name des Benutzers in eine textBox
eingegeben werden muss. Ich habe dazu ein Tutorial erstellt. Wenn ich jedoch auf die Schaltfläche klicke, um die textBox
zu validieren, und ich habe keinen Namen eingegeben, bekomme ich keinen Validierungsfehler, der sagt "Name muss eingegeben werden". Stattdessen muss ich Text in die textBox
eingeben und dann den Text löschen und dann auf den Button eine Fehlermeldung erhalten. Ich denke, das ist, weil ich es mit einer OnProperyChanged
Methode gemacht habe. Gibt es eine Möglichkeit, meine textBox
zu validieren, ohne zuerst Text eingeben zu müssen und dann den Text zu löschen?Validierung eines Textfelds wpf
Mein Code ist wie
XAML
<TextBox.Text>
<Binding Path="Name" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:NameValidator></local:NameValidator>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
NameValidator.cs Bricht
public class NameValidator : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (value.ToString().Length ==0)
return new ValidationResult(false, "value cannot be empty.");
else
{
if (value.ToString().Length > 3)
return new ValidationResult(false, "Name cannot be more than 3 characters long.");
}
return ValidationResult.ValidResult;
}
}
xaml.cs
if (!Validation.GetHasError(tbxName))
{
// do the proicessing
}
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}