2010-08-25 58 views
17

有沒有辦法爲我的WPF應用程序設置全局樣式?WPF - 全球風格?

我希望做的是將樣式應用於所有我的Button也有一個圖像的孩子。

回答

23

好吧,這是一種全能的方法 - 將下面的元素放到你的App.xaml中 - 你的所有按鈕都會改變(除了你手動應用樣式的按鈕)。

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... --> 
</Style> 

但是,如果你想打只圖像按鈕 - 你必須從你做的按鈕,每次繼承,然後應用樣式像這樣:

public class CustomImageButton:Button{} 
<Style TargetType="{x:Type local:CustomImageButton}"> 
    <Setter Property="Background" Value="LimeGreen"/> 
</Style> 
<local:CustomImageButton Content="ClickMe"/> 

這是一個非常粗粒度全球造型 - 而且你需要遵循這個慣例來使它工作。

另一種方法是使用主題 - 閱讀更多關於here

+2

不幸的是,與主題的鏈接已經死亡。 [Here](http://blogs.msdn.com/b/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx)是MSDN上關於使用主題的文章的鏈接可能類似。 – 2015-06-30 17:57:00

5

你可以做到這被

類型例如

<Style TargetType="Button"> 

將這種風格的範圍內,適用於所有的按鈕應用(如果樣式是應用在WPF隱式樣式。 XAML它將適用於所有按鈕,如果它在鏈中較低,它將適用於它下面的所有按鈕)

如果您只想將它​​應用於某些類型的按鈕(比如imagebuttons),請創建一個從按鈕(稱爲ImageButton),然後創建爲針對該類型的tyle。

+0

好的......這類作品。我的一個按鈕似乎尊重這種改變,但其他人卻不這樣做。如果我將風格設爲'x:Key',然後通過使用'Style =「{StaticResource DisabledButton}」'從每個按鈕顯式調用它們,它們都可以工作。任何方式,我可以避免必須添加一個明確的引用每個按鈕? – 2010-08-25 21:15:23

+0

確保定義此樣式的資源字典位於您需要應用樣式的所有按鈕的範圍內。 將此樣式放置在App.xaml中將對應用程序中的所有按鈕都可見。向下移動會限制其可見性。 – 2010-08-26 15:51:09

2

將樣式放到您的App.xaml中的ResourceDictionary標記中,它將應用於整個應用程序。