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

今天的伊普西特

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

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

用户可以在提供的XML文件中更新颜色代码,该颜色代码应反映应用程序中的主题更改。

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

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

另外,我在UWP技术方面还很陌生。

提前致谢。

玛丽安·多林斯基

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

您可以在中App.xaml通过将RequestedTheme属性设置为值之一(Light默认设置为该属性),或App.xaml.cs在App构造函数中使用RequestedTheme = ApplicationTheme.Light;(在以后将其更改为任何地方都会引发异常)来指定应用的主题

如果未设置该RequestedTheme属性,它将反映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

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

<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主题和默认主题资源的更多信息

另外,我建议您在Channel 9上观看视频,视频对XAML主题进行了解释,甚至包含HighContrast主题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

访问自定义模块中的“应用程序”

Android应用程序中SeekBar的自定义形状

Rails应用程序中的自定义URL

Windows Store应用程序中的自定义MessageDialougeBox

在Leanback应用程序中自定义播放控件

Phoenix应用程序中的自定义混合任务

使自定义应用程序在Ubuntu的“活动”中可用

为应用程序设置自定义主题时,TextInputLayout崩溃

为什么此自定义Ubuntu主题仅影响某些应用程序?

Shopoify 的 Polaris 是用于样式主题还是仅用于创建自定义/公共应用程序?

如何将自定义主题添加到 Ionic 5 应用程序?

我可以从Windows 10(UWP)应用程序中的Web Worker调用自定义运行时组件吗

更新自定义应用程序

自定义 Android 应用程序

如何处理自定义应用程序设置?Windows 10 UWP C#

如何为UWP页面自定义应用程序标题栏

创建主题时,如何在整个应用程序中自定义material-ui V1组件?

聚合物1.0应用程序主题仅影响index.html而不影响自定义元素

如何在单击时在运行时为整个应用程序设置自定义主题?

定义后台的自定义应用程序类型

如何在材料UI中应用自定义主题

自定义CSS文件未应用(在Angular应用程序中)

在 UWP 应用的应用设置中显示自定义信息

在自定义Java AWS应用程序中找不到类的序列化程序

Visual Studio 2017中应用程序的自定义安装程序

如何在我的电子应用程序中添加自定义的Chrome扩展程序?

无法将自定义应用程序添加到团队管理中的新自定义策略

安装后,“控制面板”中的LabVIEW应用程序的“自定义应用程序”图标

在Ionic Angular应用程序中无法从HttpClient读取HttpResponse中的自定义标头