2010-08-27 44 views
5

我的目標是能夠在XAML來寫:如何在Silverlight中的附加依賴項屬性上設置TypeConverter?

<Grid> 
    <Rectangle Fill="AliceBlue" 
      myCore:MyTimePanel.BeginningDate="03/03/2010" 
      /> 
</Grid> 

問題: 的Silverlight XAML不能從字符串解析日期時間。所以在運行時,我有XamlParseException「無法從該字符串創建DateTime」。

當我使用簡單的DependencyProperty時,我只需在getter/setter上添加一個TypeConverterAttribute,它就可以工作。像這樣(的想法來自here):

[TypeConverter(typeof(DateTimeTypeConverter))] 
public DateTime MyDate 
{ 
    get { return (DateTime)GetValue(MyDateProperty); } 
    set { SetValue(MyDateProperty, value); } 
} 

但有一個附加DP,沒有的getter/setter。我能做些什麼才能在XAML中編寫字符串日期?

謝謝!

回答

5

但附加的屬性有一個Get訪問器 - 你試過putting the type converter on the Get accessor

對於特定於版本的鏈接,它是包含相關信息的鏈接。從該頁開始:

3。您可以將類型級別的TypeConverter屬性作爲值類型。這樣可以對所有類型的值進行字符串轉換。有關更多信息,請參閱TypeConverters和XAML。

4。您可以在Get訪問器方法上指定屬性級別的TypeConverter。這使附加屬性的字符串轉換成爲可能。將TypeConverterAttribute應用於Get訪問器方法而不是Set訪問器方法可能看起來並不直觀,但這就是XAML處理器希望找到附加屬性的類型轉換信息(如果有的話)的地方。有關更多信息,請參閱TypeConverters和XAML。

+0

你是絕對正確的,謝謝! 我專注於CLR屬性(MyProp {get; set;}),但在連接DP的情況下,訪問器是靜態方法而不是屬性。 – JYL 2010-09-02 08:30:59

相關問題