0
 var solcolor = (SolidColorBrush)Application.Current.Resources["PopUpsBackground"];
 this.Background = new SolidColorBrush(solcolor.Color);

我以编程方式设置了 ContentDialogs 的背景,但它从应用程序中获取了请求的主题颜色,但我需要获取我设置的颜色。我发现这个:

   dialog.RequestedTheme = (Window.Current.Content as FrameworkElement).RequestedTheme;

但现在我需要从我需要的字典中获取颜色(深色或浅色)我也发现了这个:

Background="{Binding Source={ThemeResource PopUpsBackground}}"

但它也不起作用

4

1 回答 1

0

UWP 从暗/亮字典设置背景

您需要ThemeDictionariesApplication.Resources下面设置。并且自定义 ContentDialog 的样式将默认的 Background 属性编辑为您的自定义值。有关详细信息,请参阅此文档

<ResourceDictionary>
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Light">
            <SolidColorBrush x:Key="DialogColor" Color="Red" />
        </ResourceDictionary>
        <ResourceDictionary x:Key="Dark">
            <SolidColorBrush x:Key="DialogColor" Color="SeaGreen" />
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>


    <Style TargetType="ContentDialog">
        <Setter Property="Foreground" Value="{ThemeResource ContentDialogForeground}" />
        <Setter Property="Background" Value="{ThemeResource DialogColor}" />
        <Setter Property="BorderBrush" Value="{ThemeResource ContentDialogBorderBrush}" />
        <Setter Property="IsTabStop" Value="False" /> 
    </Style>
</ResourceDictionary>

请注意,要制作 ContentDialog 新样式效果,您需要在更改当前主题后重新启动您的应用程序。

于 2022-01-25T02:38:23.610 回答