2011-10-04 18 views
5

我正在創建自定義控件(源自Control)並且想要爲控件定義默認主題。以前,所有我創建自定義控件,我已經使用設置默認值之間的區別DefaultStyleKey

static IntegerUpDown() 
{ 
    DefaultStyleKeyProperty.OverrideMetadata(typeof(IntegerUpDown), 
    new FrameworkPropertyMetadata(typeof(IntegerUpDown))); 
} 

與此assembly屬性:

[assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, 
ResourceDictionaryLocation.SourceAssembly)] 

替代的方法來做到這一點(我曾在一些控件也注意到) -

public IntegerUpDown() 
{ 
    DefaultStyleKey = typeof(IntegerUpDown); 
} 

我想知道這兩種方法的優缺點,哪一個更喜歡?

回答

3

我可以觀察到,第一種方法要求依賴屬性框架註冊一個默認的樣式鍵。它只做一次(處於靜態構造函數中),然後用於IntegerUpDown的所有實例。第二種方法在自己創建IntegerUpDown的實例時明確地指定密鑰。他們都對我好。

MSDN說...

元數據可以被覆蓋,這樣子類可以通過重寫 屬性的元數據調整一個DP,而不是完全 重新實現物業本身。