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"];
}
}
<TextBlock Foreground="{x:Bind ToDateForeground, Mode=OneWay}" Text="Test" />
它可以工作,但是如果用户将Windows颜色更改为“深色” ,则ToDateForeground
不会自动更改。
如何处理它,就像ThemeReource
一样?
答案 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