System.ComponentModel.DataAnnotations は入力検証に革命をもたらす。
こんな属性をプロパティにつける。
[Display(Name="名前", Description="10文字以内で入力してください")]
[Required(ErrorMessage="名前を入力してください")]
[StringLength(10, ErrorMessage="名前は10文字以内で入力してください")]
プロパティのsetの PropertyChanged イベント発生させる前にでもこんな文を追加する。
Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "FullName" });
WPF でも Silverlight でも Control の Binding に ValidatesOnExceptions=True, NotifyOnValidationError=True をつけてやるとエラーを表示する。
WPF の場合は Validation.ErrorTemplate とか ToolTip とかエラー表示の Visual を考えないといけないが (デフォルトは周囲が赤くなるだけ)。
Displayもサポートされていないが・・・そのうちサポートしてくるんでしょう。
属性で入力検証出来るなんて革命的すぎる。
http://blogs.wankuma.com/kazuki/archive/2009/07/21/178723.aspx
一通りのチェックはできそうだ。
CustomValidationAttribute
RangeAttribute
RegularExpressionAttribute
RequiredAttribute
StringLengthAttribute