2010-03-16 130 views
3

應該實現兩個功能,我想知道我需要對輸入進行哪種類型的驗證以及如何管理錯誤。WPF ValueConverter錯誤處理的最佳做法是什麼?

Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert 

End Function 

Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack 

End Function 

我需要檢查,如果參數類型的類型是什麼,我期待的。

情況下,他們都沒有,我應該返回什麼,趕上在另一個地方錯誤的行爲?或者我應該在這裏拋出一個異常或斷言?

是否有適用於這裏的任何最佳或建議的做法?

回答

5

個人而言,我檢查的類型和值,然後將其轉換。如果由於任何原因它不能被轉換,那麼我只需返回value未轉換。我不會拋出任何異常或進行任何日誌記錄 - 大多數時候很容易看到轉換失敗,因爲您在用戶界面中看不到預期的項目。記錄轉換器中的錯誤可能相當昂貴,因此我避免了這種情況。數據綁定(通常)默默地失敗(我已經綁定了一個轉換器,在Silverlight中拋出了一個巨大的優勢),您可以檢查輸出窗口是否有任何錯誤,並且很簡單,可以減少條件斷點在轉換器中如果有必要調試任何問題。

+0

我想我會按照你的方法,謝謝 – Drake 2010-03-17 08:18:07

+0

對此展開調查,並似乎是最好的方式。您可以使用Style DataTrigger來檢查綁定返回的類型,並以不同的方式處理原始/已轉換的數據....可能拋出一個詳細說明此問題的答案。 – Will 2011-07-19 16:01:01

0

我只是想弄清楚爲什麼你需要趕在轉換器的異常?你有沒有例子?

在我看來,應該沒有必要爲此,並且用類似可空類型,這些都應該在正確的轉換器來處理,因爲一切應該轉換器調用之前進行處理。 也就是說如果用戶將字符串輸入到數字字段中,則應該通過驗證而不是轉換器來捕獲該字符串。

相關問題