当我调整UWP应用程序窗口的大小时,我需要更改右侧显示的默认白色背景,我需要动态地执行此操作。
我试过了:
var newBackground = Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush;
if (newBackground != null)
{
newBackground.Color = newColor;
}
newBackground已更改,但不会影响应用程序。
任何帮助?
答案 0 :(得分:0)
如果您要覆盖ApplicationPageBackgroundThemeBrush
Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] = Colors.Red;
答案 1 :(得分:0)
对于您的问题,我们需要在后台检查一些内容:
当您检查generaic.xaml中的ApplicationPageBackgroundThemeBrush时(要知道什么是generaic.xaml,您可以看到here),您会发现ApplicationPageBackgroundThemeBrush在"默认"中定义了三次, "高对比度"还有" Light"。因此,当您调用请求主题时,所有颜色都将在不同主题中更改。
this.RequestedTheme = ElementTheme.Dark
请回到您的问题,如果您将请求主题更改为" Dark"你会发现改变颜色代码:
newBackground.Color = newColor;
不会改变,因为" Dark"的默认设置。(适用于默认/ Light主题) 而且似乎我们无法在运行时从代码背后修改此主题画笔。
我认为唯一的方法是自己创建主题颜色,然后通过明确设置元素来更改颜色。
设置主题颜色。新的acrylic document为我们提供了一个好点。在这里,我为您编写一个简单的示例,以显示默认主题的工作原理:
创建字典并插入以下代码:
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<SolidColorBrush x:Key="ApplicationPageBackgroundThemeBrush" Color="Blue"></SolidColorBrush>
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="ApplicationPageBackgroundThemeBrush" Color="Yellow"></SolidColorBrush>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
将其添加到app.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
要明确设置元素,请执行类似mygrid.background = xxxx的操作。如果要在调整大小时触发它,请更改adaptivetrigger中的属性。