2016-09-16 53 views
1

我正在開發UWP應用程序,其中我想從文件(包含顏色代碼)動態設置主題。UWP應用程序中的自定義主題

我創建的文件是一個XML文件,其節點包含映射到應用程序控件的顏色代碼。

用戶可以更新提供的XML文件中的顏色代碼,這應該反映應用程序中的主題更改。

我可以爲此文件設置任何自定義位置,以便用戶可以編輯文件的內容嗎?

這是在UWP應用程序中實現主題的正確方法。

此外,我在UWP技術中頗爲新穎。

在此先感謝。

回答

5

默認情況下,UWP應用程序支持兩個主題 - LightDark

您可以通過RequestedTheme屬性設置爲任意的一個值(它被默認設置爲Light),或在應用程序構造App.xaml.cs使用RequestedTheme = ApplicationTheme.Light;(改變它的任何地方以後將導致異常指定的App.xaml您的應用程序的主題被拋出)。

如果您未設置RequestedTheme屬性,它將反映任何運行Anniversary更新和更新版本的W10移動設備或W10 PC上的Settings > Personalization > Colors中設置的主題。在較舊的Windows 10桌面版本中,它將是Light

您還可以設置默認設置爲ElementTheme.Default的任何特定FrameworkElement的主題,以便從其父項繼承主題。

<StackPanel RequestedTheme="Light"> 
    <TextBlock>Text using light theme.</TextBlock> 
    <TextBlock RequestedTheme="Dark">Text using dark theme.</TextBlock> 
</StackPanel> 

對於顏色自定義UWP通常也使用由用戶在Settings > Personalization > Colors中指定的重音顏色。

要反映在設置應用程序中爲某些元素指定自定義顏色設置的主題和重音顏色,您必須使用ThemeResource。您可以使用預定義的XAML主題資源,例如此邊框的背景色將爲Light主題中的#FFFFFFFF主題和Dark主題中的#FF000000

<Border Background="{ThemeResource SystemControlBackgroundAltHighBrush}"/> 

或者你可以使用SystemControlBackgroundAccentBrush這將反映設置應用選擇強調色。

您也可以編寫自己的theme dictionary,指定每個主題的顏色。下面是一個簡單的主題辭典的例子:

<ResourceDictionary.ThemeDictionaries> 
    <ResourceDictionary x:Key="Light"> 
     <SolidColorBrush x:Key="MyButtonBackgroundThemeBrush" Color="White"/ 
     <SolidColorBrush x:Key="MyButtonForegroundThemeBrush" Color="Black"/> 
    </ResourceDictionary> 
    <ResourceDictionary x:Key="Dark"> 
     <SolidColorBrush x:Key="MyButtonBackgroundThemeBrush" Color="Black"/> 
     <SolidColorBrush x:Key="MyButtonForegroundThemeBrush" Color="White"/> 
    </ResourceDictionary> 
</ResourceDictionary.ThemeDictionaries> 

你會使用這樣的:

<Button Content="Themed button" 
     Background="{ThemeResource MyButtonBackgroundThemeBrush}" 
     Foreground="{ThemeResource MyButtonForegroundThemeBrush}"/ 
     /> 

按鈕的背景將是White和前景將是BlackLight主題而BlackWhiteDark主題。

您可以閱讀有關ThemeResource,主題,HighContrast主題和默認主題資源here的更多信息。

另外,我建議您觀看第9頻道的this視頻,即使使用HighContrast主題,XAML主題的解釋也在哪裏。

相關問題