gpt4 book ai didi

c# - UWP 应用程序中的自定义主题

转载 作者:行者123 更新时间:2023-11-30 19:24:10 26 4
gpt4 key购买 nike

我正在开发一个 UWP 应用程序,我想在其中从文件(包含颜色代码)动态设置主题。

我创建的文件是一个 XML 文件,其节点包含映射到应用程序控件的颜色代码。

用户可以更新提供的 XML 文件中的颜色代码,这应该反射(reflect)应用程序中的主题变化。

我可以为此文件设置任何自定义位置,以便用户可以编辑文件的内容吗?

这是在 UWP 应用程序中实现主题的正确方法吗。

此外,我对 UWP 技术还很陌生。

提前致谢。

最佳答案

默认情况下,UWP 应用程序支持两个主题 - LightDark .

您可以在 App.xaml 中指定应用的主题通过设置 RequestedTheme属性为其中一个值(默认设置为 Light)或 App.xaml.cs在 App 构造函数中使用 RequestedTheme = ApplicationTheme.Light; (以后在任何地方更改它都会导致抛出异常)。

如果你不设置 RequestedTheme属性,它将反射(reflect)在 Settings > Personalization > Colors 中设置的主题在任何运行周年更新和更新版本的 W10 移动设备或 W10 PC 上。在较旧的 Windows 10 桌面版本上,它将是 Light .

您还可以设置任何特定的主题FrameworkElement设置为 ElementTheme.Default默认情况下,它会从其父级继承主题。

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

对于颜色自定义,UWP 通常使用用户在 Settings > Personalization > Colors 中指定的强调色。也是。

要反射(reflect)在“设置”应用中为某些元素指定自定义颜色的主题和强调色设置,您必须使用 ThemeResource .您可以使用预定义的 XAML 主题资源,例如此边框的背景颜色将为 #FFFFFFFFLight主题和#FF000000Dark主题。

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

或者您可以使用 SystemControlBackgroundAccentBrush这将反射(reflect)在“设置”应用中选择的强调色。

你也可以自己写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 .

我也推荐你看this第 9 channel 上的视频,其中解释了 XAML 主题,甚至使用 HighContrast主题。

关于c# - UWP 应用程序中的自定义主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com