Обычно в UWP вы можете получить загруженный в данный момент ResourceDictionary
во время выполнения и изменить ресурсы.
следующим образом:
Application.Current.Resources["SystemAccentColor"] = Colors.Red;
Если вы планируете изменить элемент ресурса ичтобы он работал на текущей странице, вот несколько советов:
- Измененный ресурс должен существовать в текущем словаре ресурсов
- Ссылка на ресурс должна использоваться с
ThemeResource
После изменения записи ресурса необходимо обновить тему, чтобы ресурс вступил в силу
if (this.RequestedTheme == ElementTheme.Light)
{
this.RequestedTheme = ElementTheme.Dark;
this.RequestedTheme = ElementTheme.Light;
}
else if (this.RequestedTheme == ElementTheme.Dark)
{
this.RequestedTheme = ElementTheme.Light;
this.RequestedTheme = ElementTheme.Dark;
}
else
{
this.RequestedTheme = ElementTheme.Light;
this.RequestedTheme = ElementTheme.Dark;
this.RequestedTheme = ElementTheme.Default;
}
Вы можете достичь своей цели, изменив текущую ResourceDictionary
, не наследуяResourceDictionary
класс для переписывания. В конце концов, большинство ресурсов может быть предопределено.
С уважением.