UWP - Как связать разные SolidColorBrush через статус? - PullRequest
0 голосов
/ 21 ноября 2018
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 на Dark , ToDateForeground не делаетне меняется автоматически.

Как с этим бороться, точно так же, как ThemeReource?

1 Ответ

0 голосов
/ 21 ноября 2018

Вы пытались обработать изменения цвета 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 на Dark, ToDateForeground автоматически не изменяется.

Измените RequestedTheme для своего приложения, тогда все ресурсы темы будут изменены в соответствии с текущими цветами темы.пожалуйста, посмотрите на ApplicationTheme

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...