2011-08-27 96 views
2

我實現了類型CustomDoubleConverter,它實現了IValueConverter。 我把它包含在Converter={StaticResource customDoubleConverter}xaml-文件中的相應資源。 它工作正常。WPF:如何在從IValueConverter拋出的UI中顯示錯誤消息?

問題是關於錯誤處理。 我想檢查一下UI字符串是否代表正確的double。如果沒有,則根據無效輸入顯示標籤上的兩條消息之一:空字符串或其他非雙字符串。

當從字符串轉換類型時發生錯誤時,應使用哪種方法在UI窗體上顯示自定義錯誤消息?

我試圖通過例外,但收到未處理的異常。 Tip: Do not throw an exception in a IValueConverter說服我不要再嘗試例外。

我已經能夠在轉換之後檢查雙重處理,正確處理了MOVVM視圖模型中的IDataErrorInfo接口。但是它可以在成功完成字符串到雙倍轉換之後完成,這不是上述情況。

我也有我的文本框ValidatesOnDataErrors="True"ValidatesOnExceptions="True"

我使用MVVM方法進行設計(如果有幫助)(與WPF Apps With The Model-View-ViewModel Design Pattern中描述的類似)。

簡而言之:

我想從TextBox解析雙,並顯示三條錯誤信息之一,如果任何UI標籤:

  • 空字符串(如上所述),
  • 無效雙字符串(上面提到)和
  • 負號(上面沒有提到,但我通過IDataErrorInfo處理過 - 這不是問題)。

回答

2

它嚴格依賴於您的UI設計,或換句話說,如何您將通知用戶的問題。 我會說使用Dependency Properties。例如。

比方說,用戶在文本框中插入一個值。 TextBox具有DataError依賴項string屬性。轉換器在失敗的情況下,只需將該屬性設置爲適當的用戶字符串(可從本地化資源中恢復)。一次性屬性setuppped,TextBox變爲紅色,清除內容並打印由轉換器生成的錯誤文本。

我的意思是使用Dependency Properties,它將如何在最終用戶界面中取決於您的應用程序設計和您的選擇。

也有另一種相關的SO鏈接:

How to handle exception in Value converter so that custom error message can be displayed

希望這有助於。

+0

我會通過表格上的標籤通知用戶,更新的問題。我使用MVVM方法進行設計。 – sergtk

+1

ok,所以你可以在標籤上設置一個依賴屬性,當轉換器失敗時,它設置它。標籤接收到該信號變爲可見並顯示從Converter傳來的文本。 – Tigran

+0

謝謝,我會嘗試一下,使用WPF的經驗非常少。 – sergtk