2011-03-01 93 views
8

我希望有人能解釋我遇到的一些意想不到的行爲,同時繼續探索DependencyObjects和DependencyProperties。爲什麼我可以訪問未在我的DependencyObject上註冊的DependencyProperties?

考慮下面的簡單類:

class SomeClass : DependencyObject { 
    } 

我可以高興地編寫代碼,如:

public static void Test() { 
    SomeClass a = new SomeClass(); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
    a.SetValue(EllipseGeometry.RadiusXProperty, 3.24); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
} 

這給下面的輸出:

0 
3.24 

沒有什麼在我的類與EllipseGeometry類有任何關係,並且我沒有將我的類添加爲該類的所有者EllipseGeometry.RadiusXProperty屬性或使​​用RegisterAttached(),爲什麼這個工作?看來我可以非常高興地將任何DP添加到我的DO中而沒有框架引發錯誤。

有沒有其他人發現這種奇怪的行爲?我會期待某種形式的例外,如「你還沒有用這個對象註冊這個屬性」......我很感激任何關於是否有以這種方式將DP添加到DO中的特殊用法,因爲我看不到允許這種行爲的目的。

非常感謝, 馬特

+0

我猜'SomeClass'是爲了'TestClass'(反之亦然)? – 2011-03-01 00:55:44

+0

EllipseGeometry.RadiusXProperty是附屬屬性嗎? – 2011-03-01 00:57:23

+0

嗨史蒂文,你猜對了,我有一個複製和粘貼錯誤。我已將TestClass重命名爲SomeClass。現在已經很晚了,我還能說什麼呢。感謝您花時間回答 – 2011-03-01 01:01:54

回答

1

這種行爲使您可以使用附加屬性。沒有這個,你怎麼能在TextBox上使用Grid.Row。

相關問題