【问题标题】:C# UWP Change global app backgroundC# UWP 更改全局应用背景
【发布时间】:2018-03-14 15:26:09
【问题描述】:

当我调整 UWP 应用程序的窗口大小时,我需要更改显示在右侧的默认白色背景,并且我需要动态地进行。

我试过了:

var newBackground = Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush;
if (newBackground != null)
{
    newBackground.Color = newColor;
}

newBackground 已更改,但不影响应用程序。

有什么帮助吗?

【问题讨论】:

  • 您的代码中的background 是什么?
  • 搞错了,我已经更新了我的问题。
  • 你想覆盖ApplicationPageBackgroundThemeBrush吗?
  • 我想更改 App 的默认背景颜色。如果您设置浅色主题,则颜色为白色,如果您设置深色主题,则颜色为黑色。我在 App 的主根后面。
  • 但是ApplicationPageBackgroundThemeBrush 具有与您想要的相同的行为。检查here

标签: c# colors background uwp resize


【解决方案1】:

对于您的问题,我们需要在后台检查一些内容:

当您检查generaic.xaml中的ApplicationPageBackgroundThemeBrush时(了解什么是generaic.xaml,您可以看到here),您会发现ApplicationPageBackgroundThemeBrush在“Default”、“HighContrast”和“Light”中定义了3次”。这样当您调用请求主题时,所有颜色都会在不同的主题中更改。

    this.RequestedTheme = ElementTheme.Dark

所以回到你的问题,如果你将请求主题更改为“深色”,你会发现更改颜色代码:

    newBackground.Color = newColor;

不会改变,因为“暗”有默认设置。(它适用于默认/浅色主题) 而且我们似乎无法在运行时从后面的代码修改这个主题画笔。

我认为唯一的方法是自己创建主题颜色,然后通过显式设置元素来更改颜色。

设置主题颜色。新的acrylic document 为我们提供了一个好点。这里我写了一个简单的例子来展示默认主题是如何工作的:

  1. 创建字典并插入以下代码:

    <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>
    
  2. 将其添加到 app.xaml:

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
    

要显式设置元素,请执行 mygrid.background=xxxx 之类的操作。如果想在resize的时候触发,修改adaptivetrigger的属性即可。

【讨论】:

    【解决方案2】:

    如果你想覆盖ApplicationPageBackgroundThemeBrush

    Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] = Colors.Red;
    

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2021-11-18
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2016-07-04
      相关资源
      最近更新 更多