私は、ユーザの名前をtextBox
に入力する必要があるアプリケーションを作成しています。私はこれを行うためのチュートリアルを休んだ。しかし、ボタンをクリックしてtextBox
を検証したところ、名前を入力していないと、「名前を入力する必要があります」という妥当性検査エラーが表示されません。代わりに、textBox
にテキストを入力してからテキストを削除し、ボタンをクリックしてエラーメッセージを表示する必要があります。これは私がOnProperyChanged
メソッドを使って行っているからです。 textBox
のテキストを最初に入力してからテキストを削除することなく検証できる方法はありますか?テキストボックスの検証
XAML
<TextBox.Text>
<Binding Path="Name" Mode="TwoWay" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:NameValidator></local:NameValidator>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
NameValidator.cs
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));
}