2011-09-13 197 views
1

我有一個Silverlight控件,它有一個顯示一系列電子郵件地址的ListBox。數據源是ViewModel中的字符串ObservableCollection(每個電子郵件一個)。夠簡單!Silverlight驗證問題

我想允許通過雙向綁定將數據模板從TextBlock更改爲TextBox來就地編輯列表。

問題是這樣的:如何驗證用戶編輯是一個有效的電子郵件地址?

我不想將綁定文本保存到列表中,除非它是有效的。我不能拋出異常,因爲它綁定到一個字符串,所以沒有Set方法來修改。

我能想到的唯一解決方案是創建一個具有單個Email屬性的虛擬類,以便我可以驗證該值。我無法相信這是最好的方式。

+0

什麼是ListBox綁定的__Exact__類型? – AnthonyWJones

+0

該綁定是DataContext設置爲{綁定路徑=電子郵件列表}的列表框 EmailList是: public ObservableCollection EmailList {get;組; } ListBox模板有一個綁定到{Binding}的單個TextBound – Quango

回答

1

那麼你的問題不僅僅是驗證。當源對象是字符串時,不能使用雙向綁定。

創建一個具有EmailAddress字符串屬性的AddressEntry類確實很有意義。通過這種方式,您可以進行雙向綁定工作,併爲您提供編寫驗證的地方。

+0

感謝您的確認。這讓我想想如何用Silverlight編寫UI代碼一段時間(asp.net開發人員)。 – Quango