2011-09-13 17 views
1

私は一連の電子メールアドレスを示すListBoxを持つSilverlightコントロールを持っています。データソースは、ViewModel内の文字列のObservableCollection(電子メールごとに1つ)です。十分に簡単!Silverlight検証の問題

データテンプレートをTextBlockからTextBoxに変更することで、リストのインプレイス編集を双方向バインディングで許可したかったのです。

問題は次のとおりです。ユーザー編集が有効なメールアドレスであることを確認するにはどうすればよいですか?

有効でない限り、バインドされたテキストをリストに保存したくありません。それは文字列にバインドされているので、私は例外をスローすることはできませんので、変更するSetメソッドはありません。

私が考えることができる唯一の解決策は、値を検証できるように単一のEmailプロパティを持つダミークラスを作成することです。それが最善の方法だとは思えません。

+0

ListBoxがバインドしている__Exact__タイプは何ですか? – AnthonyWJones

+0

バインディングは、DataContextが{Binding Path = EmailList}に設定されたListBoxです。 EmailListは: public ObservableCollection EmailList {get;セット; } ListBoxテンプレートには{Binding}にバインドされた単一のTextBoundがあります – Quango

答えて

1

まあ、検証だけではなく、大きな問題があります。ソースオブジェクトが文字列の場合、TwoWayバインディングは使用できません。

EmailAddress文字列プロパティを持つAddressEntryクラスを作成することは意味があります。そうすれば、双方向バインディング作業を行うことができ、検証を書くことができます。

+0

確認していただきありがとうございます。 Silverlightを使用してUIコードを記述する方法を解説するために、私は(asp.net開発者)をしばらくお待ちしています。 – Quango