UWP-如何通过状态绑定不同的SolidColorBrush?

时间:2018-11-21 03:50:16

标签: xaml uwp

public DateTime? ToDate { get; set; }

状态为ToDate,我为模型添加了一个属性。逻辑如下:

public SolidColorBrush ToDateForeground
{
    get
    {
        if (ToDate.HasValue && ToDate.Value <= DateTime.Now)
        {
            return new SolidColorBrush(Colors.Red);
        }
        return Application.Current.Resources["SystemControlForegroundBaseLowBrush"];
    }
}

Xaml

<TextBlock Foreground="{x:Bind ToDateForeground, Mode=OneWay}" Text="Test" />

它可以工作,但是如果用户将Windows颜色更改为“深色” ,则ToDateForeground不会自动更改。

如何处理它,就像ThemeReource一样?

1 个答案:

答案 0 :(得分:0)

您是否尝试处理应用程序的Windows颜色更改:

                    var uiSettings = new UISettings();
                    var color = uiSettings.GetColorValue(Windows.UI.ViewManagement.UIColorType.Background);

                    if (color == Windows.UI.Colors.Black) // Dark Mode
                    {
                        this.RequestedTheme = ApplicationTheme.Dark;
                    }
                    else if (color == Windows.UI.Colors.White) //Light Mode
                    {
                        this.RequestedTheme = ApplicationTheme.Light;
                    }
  

如果用户将Windows颜色更改为“深色”,则ToDateForeground不会自动更改。

为您的应用更改RequestedTheme,然后所有主题资源将更改为与当前主题颜色匹配。请看看ApplicationTheme