Weitere ähnliche Inhalte
Ähnlich wie 111008 silverlight square_datavalidation
Ähnlich wie 111008 silverlight square_datavalidation (20)
Mehr von Takayoshi Tanaka
Mehr von Takayoshi Tanaka (20)
111008 silverlight square_datavalidation
- 4. で、公開してるブログの紹介
銀の光と藍い空
– http://techblog.hilife-jp.info/
Silverlight(Web), WP7, Azure, Kinect
ネタが中心です
最近はSilverlight 5 シリーズやってます
– http://techblog.hilife-
jp.info/search/label/Silverlight5
- 5. 自己紹介 (@tanaka_733)
ERPパッケージベンダーの研究部門
– クラウドを使っていい感じにする研究
Silverlightは業務アプリ開発で使ってます
– サーバーサイドはJava
– 前回発表したものです
https://skydrive.live.com/view.aspx?cid=B43F483
2F5BAFBB9&resid=B43F4832F5BAFBB9%211128
今回から 囲む会in東京 の運営にも
参加しています
WP7, Kinect, クラウド関連の勉強会
にも出現します
- 14. 用意されているもの
UI部品
– DataForm (ちょっと特殊なので今回はなし)
– Label
– DescriptionViewer
– ValidationSummary
– TextBox, ComboBoxなど入力系UI
検証ロジック
– いくつかのやり方が存在
- 19. データ検証の実装方法
検証方法の定義
個人的に
– 自前の検証関数で定義 おすすめ
– DataAnnotationsで定義
VMでの実装方法
– 検証してNGだったら例外を投げる
– IDataErrorInfoをVMが実装する
– INotifyDataErrorInfoをVMが実装する
- 23. DataAnnotations一覧
検証属性 説明
CustomValidationAttribute 検証用にカスタム メソッドを使用します。
特定の種類のデータ (電子メール アドレス、
DataTypeAttribute
電話番号など) を指定します。
EnumDataTypeAttribute 値が列挙体に含まれることを保証します。
RangeAttribute 最小値および最大値の制約を指定します。
RegularExpressionAttribute 正規表現を使用して有効な値を指定します。
RequiredAttribute 値が必須であることを指定します。
StringLengthAttribute 最大文字数および最小文字数を指定します。
ValidationAttribute 検証属性の基本クラスとして動作します。
http://msdn.microsoft.com/ja-jp/library/dd901590%28v=vs.95%29.aspx
- 30. INotifyDataErrorInfo メンバ
HasErrors プロパティ
– オブジェクトの検証エラーが発生しているかどう
かを示します
GetErrors メソッド
– 指定されたプロパティまたはオブジェクト全体の
検証エラーを含む IEnumerableを返します
– IEnumerableの要素はToStringメソッドでエ
ラーメッセージを返す
ErrorsChanged イベント
– IEnumerable が変更されるたびに、ユーザー イ
ンターフェイス (UI) スレッド上で発生させる
- 32. INotifyDataErrorInfoの実装例
ViewModelBaseクラス
ValidateProperty,
ValidateObject メソッド
を呼ぶと検証する
検証するとその結果を
ErrorsContainerに格納
検証結果に変更があると、
ErrorsChanged イベント
ハンドラを呼び出す
- 34. プロパティの実装
コードスニペットにしておくのがお手軽
<Code Language="csharp">
<![CDATA[#region $property$
private $type$ $var$;
public $type$ $property$
{
get { return $var$; }
set
{
if ($var$ == value)
{
return;
}
$var$ = value;
RaisePropertyChanged("$property$");
ValidateProperty("$property$", value);
}
}
#endregion
$end$]]>
</Code>
- 39. 使えるUIコンポーネント
入力系UI
– 検証時にポップアップ
Label
– 必須入力時にVisualStateが代わる
– Display要素でLabelのContentを指定できる
DescriptionViewer
– メッセージを表示
ValidationSummary
– メッセージを一覧表示
- 41. Windows Phone 7 では
入力UIの検証属性は存在する
検証系のUIは非サポートとの記述
実際に検証属性を使っても何も起きな
かった
要はUI側のデータ検証は使えない
– 画面が小さいので
そんな面倒な入力はさせるなってこと!?
ロジック内でのデータ検証には使えそう