Cómo actualizar una aplicación WinJS UWP después de que cambie el colo

Cómo actualizar una aplicación WinJS UWP después de que cambie el color de acento del sistema de Windows

Tengo 2 variables, accentColor y backgroundColor. backgroundColor se actualiza como se esperaba cuando cambio la configuración de Windows de modo claro a oscuro, pero accentColor no cambia cuando elijo un nuevo color de acento de Windows.

var uiSettings = new Windows.UI.ViewManagement.UISettings(),
   accentColor = uiSettings.getColorValue(Windows.UI.ViewManagement.UIColorType.accent),
   backgroundColor = uiSettings.getColorValue(Windows.UI.ViewManagement.UIColorType.background);

Por lo tanto, no puedo actualizar la interfaz de usuario para reflejar la elección del usuario. ¿Es esto un error? ¿Hay alguna solución alternativa?

Los estoy revisando en el evento de cambio de visibilidad.

document.addEventListener("visibilitychange", onVisibilityChanged);

Esto ocurre en Windows 10 Pro 1709 compilación 16299.309 pero, sorprendentemente, funciona correctamente en Windows 10 Mobile.

Mostrar la mejor respuesta

Puede detectar el cambio de color de énfasis en colorvalueschangedcontrolador de eventos de la instancia UISettings.

@NicoZhu-MSFT Esto me indicó la dirección correcta. También tuve un problema al detectar el evento porque uiSettings estaba en el ámbito incorrecto o algo así (dentro de una función anónima), mientras que visibiltychange se adjunta al documento, por lo que estaba funcionando. Todavía no estoy seguro de por qué se actualizó backgroundColor, pero no accentColor, ¡pero todo funciona ahora! Puedo publicar toda la configuración si alguien está interesado en la solución completa

Puedes detectar el cambio de color de énfasis en colorvalueschangedevent controlador de la instancia de UISettings. Cuando cambie el color de énfasis del tema del sistema, se activará.

var uiSettings = new Windows.UI.ViewManagement.UISettings();
uiSettings.addEventListener("colorvalueschanged", onColorChanged);

function onColorChanged() {

    var accentColor = uiSettings.getColorValue(Windows.UI.ViewManagement.UIColorType.accent);

}