2016-07-01 52 views
5

Questa barra del titolo cambia colore del testo tra bianco e nero, a seconda del colore del sistema attualmente selezionato (testo bianco su sfondi scuri e testo nero su sfondi chiari)Qual è il temaResource per il colore del testo del titolo della finestra?

enter image description here

Qual è il ThemeResource per quel colore?

Ho un pulsante con un background impostato su SystemControlBackgroundAccentBrush e mi piacerebbe avere questo effetto di regolazione foreground (colore del carattere) a seconda dell'accento attualmente selezionato.


ho provato SystemControlForegroundAccentBrush, ma sembra che questo e SystemControlBackgroundAccentBrush sono gli stessi colori (e non avevo cambiato nulla nelle impostazioni di sistema).

+2

Questo non può essere sia WPF e UWP –

risposta

-1

Penso che quello che stai cercando è SystemColorWindowTextColor. Questo collegherà al colore di primo piano del sistema corrente per il testo.

è possibile trovare un elenco completo sul MSDN site here

+0

Che il colore specifico viene utilizzato per il tema HighContrast. Non dovresti scherzare con quel colore, in quanto può avere un enorme effetto negativo per gli utenti che hanno esigenze di accessibilità diverse. –

+0

@DavidGrochocki Penso che tu abbia frainteso la domanda. Sta parlando di ignorare quel colore. Se si sostituisce il colore, non importa a cosa è impostato dall'utente. Questa non è una cattiva pratica. È fatto spesso per applicazioni di stile del marchio per le imprese. –

+0

"C'è una serie di valori di colore derivati ​​dalla tavolozza di sistema di Windows ... molte delle risorse del pennello XAML consumano questi colori quando il sistema è in funzione (e l'app è in esecuzione) usando il tema" HighContrast "... Le chiavi seguono il formato di denominazione: 'SystemColor [nome] Colore'." SystemColorWindowTextColor è uno di quei valori di colore, ed è applicabile solo nel tema "HighContrast", quindi non dovrebbe essere sovrascritto. (Fonte: [Docs] (https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/xaml-theme-resources)) –

0

Non c'è un unico pennello che farà il trucco.

Evitare l'uso del colore accento come sfondo, in particolare per testo e icone. Poiché il colore dell'accento può cambiare, se devi usarlo come sfondo, devi fare del lavoro aggiuntivo per assicurarti che il testo in primo piano sia facile da leggere. (Fonte: UWP Style Guide)

Sulla base all'algoritmo esempio propongono di utilizzare nella documentazione, questo dovrebbe fare il trucco:

private void UpdateAccentColorForeground(FrameworkElement element) 
{ 
    var uiSettings = new UISettings(); 
    Color c = uiSettings.GetColorValue(UIColorType.Accent); 

    element.RequestedTheme = ((5 * c.G + 2 * c.R + c.B) <= 8 * 128) 
     ? ElementTheme.Light 
     : ElementTheme.Dark; 
}