2010-01-27 46 views
1

我正在使用的系統在內部使用大量的自定義值類型。我正在使用WPF開發原型UI。 WPF不知道如何顯示自定義類型。我知道我可以編寫一個自定義的ValueConverter來做到這一點,但我真的不希望每次綁定到我的XAML中的類時都必須指定使用轉換器。在不使用價值轉換器的情況下在WPF中顯示自定義值類型

是否有一個接口我可以在自定義值類型中實現,它將讓WPF知道如何在本地顯示它?

或者,有沒有一種方法可以指定應用於我們自定義類型的任何實例的應用程序範圍的值轉換器,而無需在每個綁定表達式中指定ValueConveter?

回答

1

啊哈!弄清楚了。我需要編寫一個TypeConverter並將其應用於我的自定義類型。這允許WPF自動找出如何處理它們,而無需在XAML中指定模板或轉換器。

http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx

+0

**這是一個糟糕的主意,也是一個糟糕的解決方案。**您應該在App.xaml或Themes/Generic.xaml中使用默認的'DataTemplate'。模板化是WPF強大的功能:相同的對象在應用程序的不同部分或不同的應用程序中可能看起來不同,並且在數據層和用戶界面之間有明確的分隔。一個好的WPF設計的基本原則是你的數據層應該對UI沒有任何瞭解。這有很多很好的理由。使用知道UI的TypeConverter嚴重違反了這個原則。 – 2010-02-12 17:37:08

+0

@Ray Burns:解決方案對於自定義值類型非常合適 - 例如,我有自定義字符串,小數和布爾類型以簡化轉換和數據庫訪問 – 2011-10-03 13:42:57

1

您應該能夠爲您的值類型指定一個DataTemplate,並將其放入您的應用程序資源中。這將決定您的值類型是如何全局顯示的。

0

對不起,如果這是如此明顯這是愚蠢的,但爲什麼你不重寫ToString()在你的值類型?

+0

我做到了。這是行不通的,至少對於我正在處理的情況,它綁定到DataGrid。 – Jason 2010-01-27 20:41:54

相關問題