2012-04-30 147 views
4

我們正在編寫TextBox的自定義子類,我們只需要更改樣式的一些基本部分。現在我們知道,當你繼承Control,通常你應該改變這樣的元數據...如何基於默認控件的樣式創建樣式?

public class EnhancedTextBox : TextBox 
{ 
    static EnhancedTextBox() 
    { 
     // Commenting this line out lets this use the default TextBox style. 
     DefaultStyleKeyProperty.OverrideMetadata(
      typeof(EnhancedTextBox), 
      new FrameworkPropertyMetadata(typeof(EnhancedTextBox))); 
    } 
} 

這改變了用於該子類類型爲類型本身的關鍵,這意味着它不再變默認的TextBox樣式。沒有biggie ...我們只是評論這一行,它再次工作,因爲鍵仍然設置爲TextBox直接使用的值。

但是,我們想知道,如果我們沒有想改變風格的幾件事情,而不是整個的風格,我們可以簡單地創建新的樣式,並設置其屬性BasedOn ...但做我們在那裏設置?我們不希望手動拉出XAML並創建一個新樣式,給它一個鍵,然後使用StaticResource,但是我們還沒有找到我們可以在那裏設置的內容來說'這是基於TextBox樣式。

我希望它的東西很簡單,但再次,我們還沒有找到它。誰能幫忙?

回答

5

就這樣......我找到了。男人,踢我自己,這是顯而易見的,我錯過了!

<Style TargetType="{x:Type local:EnhancedTextBox}" 
    BasedOn="{StaticResource {x:Type TextBox}}"> 

    .... 

</Style> 

在這裏找到... WPF style basedon current