2013-08-03 76 views
3

我想知道如何去創建所有配色方案等的自定義設置。我知道我可以爲單個組件或零件創建樣式..但我應該如何創建一組皮膚?如何在WPF中爲GUI創建皮膚?

例如,現在我在許多子控件中使用褐紅色漸變刷。但是,我確信除了我以外的人會討厭配色方案。

我知道我可以在頂級控件上爲顏色創建一個依賴屬性,然後將需要該顏色的各個部分綁定到該依賴屬性。但是,需要有很多屬性。我應該創建一個包含所有這些屬性的獨立樣式對象,並將其作爲字段放在我的用戶控件中嗎?

我只是想知道是否有其他方式在WPF中做到這一點。例如,我猜可能有某種方法在xaml中執行此操作,或者使用默認庫中的某些內置類。

回答

2

您可以通過創建新的資源字典併爲您的控件定義顏色和控件模板來完成此操作。

示例您可以在WPF Themes項目中找到(download link)。

你可以通過改變資源字典改變你的風格,如:

<Application x:Class="ThemesSample.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="Window1.xaml"> 
    <Application.Resources> 
     <ResourceDictionary Source="ExpressionDark.xaml"/> 
    </Application.Resources> 
</Application> 

如果你想在運行時更改主題,你應該使用下面的代碼:

ResourceDictionary dict = new ResourceDictionary(); 
dict.Source = new Uri("BureauBlack.xaml", UriKind.Relative); 
this.Resources.MergedDictionaries.Add(dict); 
+0

我想我不知道是否有任何方法可以切換xaml中的資源目錄,或者如果我希望能夠在運行時切換樣式,我是否需要在代碼後面執行它。 我也很好奇這是MVVM進來的地方,而且你定義了一個新的視圖,它定義了不同的樣式或其他東西。 –

+1

@JamesJoshuaStreet如果你想在運行時改變風格,你應該在後面的代碼中做到這一點。如果您的視圖具有不同的樣式,則可以使用MergedDictionaries添加以查看資源適當的樣式。 – kmatyaszek