Comment mettre à jour une application WinJS UWP après le changement de

Comment mettre à jour une application WinJS UWP après le changement de couleur d'accent du système Windows

J'ai 2 variables, accentColor et backgroundColor. backgroundColor se met à jour comme prévu lorsque je modifie les paramètres Windows du mode clair au mode sombre, mais accentColor ne change pas lorsque je choisis une nouvelle couleur d'accentuation Windows.

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

Par conséquent, je ne peux pas mettre à jour l'interface utilisateur pour refléter le choix de l'utilisateur. Est-ce un bogue ? Existe-t-il une solution ?

Je les vérifie sur l'événement de visibilitéchanged.

document.addEventListener("visibilitychange", onVisibilityChanged);

Cela se produit sur Windows 10 Pro 1709 build 16299.309 mais fonctionne étonnamment correctement sur Windows 10 Mobile !

Montrez la meilleure réponse

Vous pouvez détecter la modification de la couleur d'accent dans le colorvalueschangedgestionnaire d'événements de l'instance UISettings.

@NicoZhu-MSFT Cela m'a orienté dans la bonne direction. J'ai également eu un problème pour détecter l'événement car uiSettings était dans la mauvaise portée ou quelque chose (à l'intérieur d'une fonction anonyme), alors que visibiltychange est attaché au document, donc fonctionnait. Je ne sais toujours pas pourquoi backgroundColor a été mis à jour, mais pas accentColor, mais tout fonctionne maintenant ! Je peux poster l'ensemble de la configuration si quelqu'un est intéressé par la solution complète

Vous pouvez détecter la modification de la couleur d'accent dans le colorvalueschangedevent gestionnaire de l'instance UISettings. Lorsque vous modifiez la couleur d'accentuation du thème du système, il sera déclenché.

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

function onColorChanged() {

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

}