UWP是否有办法禁用整个应用程序的丙烯酸,并始终使用备用颜色?

UWP是否有办法禁用整个应用程序的丙烯酸,并始终使用备用颜色?,uwp,uwp-xaml,acrylic-material,Uwp,Uwp Xaml,Acrylic Material,我目前正在开发一款UWP应用程序,它看起来像这样,左侧面板上有压克力: 现在,当我在笔记本电脑上启用节能模式时,亚克力将被其备用颜色所取代: 现在,我希望在我的应用程序的设置屏幕中有一个选项,可以在整个应用程序中禁用丙烯酸,并始终使用备用颜色。但是我不知道从哪里开始。但我不知道如何实现它,而不必检查应用程序中的每一种丙烯酸材料,并添加代码来禁用它 是否有一个顶级设置,我可以用来做这件事?谢谢。您可以将此代码放到App.xaml或ShellPage的资源中 您可以根据需要设置颜色。这将覆盖默认颜

我目前正在开发一款UWP应用程序,它看起来像这样,左侧面板上有压克力:

现在,当我在笔记本电脑上启用节能模式时,亚克力将被其备用颜色所取代:

现在,我希望在我的应用程序的设置屏幕中有一个选项,可以在整个应用程序中禁用丙烯酸,并始终使用备用颜色。但是我不知道从哪里开始。但我不知道如何实现它,而不必检查应用程序中的每一种丙烯酸材料,并添加代码来禁用它


是否有一个顶级设置,我可以用来做这件事?谢谢。

您可以将此代码放到App.xaml或ShellPage的资源中

您可以根据需要设置颜色。这将覆盖默认颜色

<SolidColorBrush x:Key="NavigationViewDefaultPaneBackground" Color="Red" />
您可以使用CustomResource决定如何显示AcrylicBrush:

预备

在问题描述中,您需要顶级设置来切换丙烯酸效果。在这里,您可以使用LocalSettings

Tool.cs

公共类工具 { 公共静态无效WriteLocalSettingstring键,对象值 { var localSetting=ApplicationData.Current.LocalSettings; localSetting.Values[key.ToString]=值; } 公共静态对象GetLocalSettingstring键,对象defaultValue { var localSetting=ApplicationData.Current.LocalSettings; bool isKeyExist=localSetting.Values.ContainsKeykey.ToString; 如果isKeyExist存在 { 返回localSetting.Values[key.ToString]; } 其他的 { WriteLocalSettingkey,默认值; 返回默认值; } } } 迪菲恩

根据的文档,您需要创建一个派生类

公共类CustomResourceLoader:CustomXamlResourceLoader { 受保护的覆盖对象GetResourcestring resourceId、string objectType、string propertyName、string propertyType { 如果resourceId==MyBackground { bool isuseacrick=boolTool.getLocalSettingisuseacrick,true; var刷=新的丙烯刷; brush.TintColor=Colors.White; brush.BackgroundSource=AcrylicBackgroundSource.hostbackground; 笔刷不透明度=0.7; brush.FallbackColor=Colors.White; brush.AlwaysUseFallback=!isuseAcrystic; 回刷; } 返回null; } } 用法

App.xaml.cs

公共应用程序 { // ... CustomXamlResourceLoader.Current=新的CustomResourceLoader; } 主页

专用无效切换开关\切换对象发送器,路由目标e { Tool.writeLocal设置为使用丙烯酸,发送器为ToggleSwitch.IsOn; //需要重新渲染吗 } 应该注意,在运行时切换不会影响已渲染的元素。修改后,可以弹出一个消息对话框,要求用户重新启动应用程序以重新渲染


谢谢。

一切正常,谢谢。一种不需要重新启动的方法是使用丙烯酸刷子检查每个元素并重新设置刷子,尽管这种方法不需要检查应用程序中的每一种丙烯酸材料并添加代码来禁用它。