![](/img/trans.png)
[英]How do I use the targetType parameter in an IValueConverter?
[英]Should I use the targetType parameter of the IValueConverter
每次我寫一個值轉換器時,我都想知道如何處理在IValueConverter的Convert
和ConvertBack
方法中指定的targetType
參數:
object Convert(object value, Type targetType, object parameter, CultureInfo culture)
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
我注意到很多實現只是通過檢查它來使用targetType
( if (targetType == typeof(RequiredType))
)並拋出一些異常或者如果類型不符合預期則返回null值:
但是其中許多(我認為它是大多數)完全忽略了參數:
我嘗試使用參數找到一些指導或提示,但不幸的是我發現什么都沒有。 這兩種方法都在做自己的工作,但其中一種方法更正確嗎? 這些方法的優點和缺點是什么? 我應該忽略或使用參數嗎?
我個人的觀點是不檢查參數以允許轉換器的使用更靈活,但我很高興得到你的意見。
調用者將告訴您轉換值所需的類型:
true/false
到Visibility
,那么你可以忽略targetType
。 顯而易見的是如何使用轉換器,不需要拋出異常。 targetType
轉換值,例如使用轉換器轉換為ImageSource
或Brush
。 在第一種情況下,您想要生成圖像(例如錯誤圖像),在另一種情況下,您需要一種簡單的顏色(例如紅色)。 targetType
你的轉換器,並且它是否受支持並不明顯,那么你可以通過拋出異常來警告開發人員。 我認為最常見的情況是1)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.