2015-05-22 20 views
11

Sto cercando di ignorare alcuni colori di stile in Windows 10 ma non riesco a farlo funzionare.Sostituisci pennello tema Windows 10 UWP

mio app.xaml assomiglia a questo:

 <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary.ThemeDictionaries> 
      <ResourceDictionary x:Key="Default" Source="Theme.xaml"/> 
     </ResourceDictionary.ThemeDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

E il mio Theme.xaml assomiglia a questo

<ResourceDictionary 
x:Key="Default" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

<SolidColorBrush x:Key="ListBoxBackgroundThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="ListBoxFocusBackgroundThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="ListBoxItemPressedBackgroundThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="ListBoxItemSelectedForegroundThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="ListBoxItemSelectedBackgroundThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="FocusVisualBlackStrokeThemeBrush" Color="Transparent" /> 
<SolidColorBrush x:Key="ScrollBarButtonForegroundThemeBrush" Color="Red" /> 
<SolidColorBrush x:Key="ScrollBarPanningBackgroundThemeBrush" Color="Red" /> 
<SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="White"/> 

<SolidColorBrush x:Key="SearchBoxHitHighlightSelectedForegroundThemeBrush" Color="Red"/> 
<SolidColorBrush x:Key="SearchBoxHitHighlightForegroundThemeBrush" Color="Pink"/> 

Tuttavia non funziona, ma non sovrascrive lo stile ovunque

+0

Il tasto "Predefinito" è correlato al tema Scuro, prova ad aggiungere una nuova riga con il tasto "Chiaro". Fai anche attenzione alle differenze tra StaticResource e ThemeResource. –

risposta

6

Gli stili impostati sono per le app di Windows 8. Gli stili utilizzati dalle app di Windows universale sono notevolmente semplificati.

Il modo più semplice per trovarli è aggiungere il ListBox a una pagina, fare clic con il tasto destro su di esso nella finestra di progettazione e selezionare Modifica modello ... Creare una copia del modello e osservare i nomi utilizzati.

Tutti i controlli ora usano gli stessi pennelli quando possibile invece di quelli specifici per il controllo.

Ad esempio, la ListBox utilizza i seguenti pennelli per il suo primo piano, sfondo, e BorderBrush:

  • SystemControlForegroundBaseHighBrush
  • SystemControlBackgroundChromeMediumLowBrush
  • SystemControlForegroundBaseHighBrush
+0

In realtà è quello che ho fatto. Lo stile di SearchBox sovrascritto è: http://pastebin.com/39aG751n eppure non funziona per cambiare alcuni colori come SearchBoxHitHighlightForegroundThemeBrush e SearchBoxHitHighlightSelectedForegroundThemeBrush – robertk

+0

Questo ha funzionato per me nella versione RTM di Windows 10 IoT/UWP. Ad esempio, per ignorare il fastidioso pennello di accento predefinito rosa e mettere il colore del tuo marchio lì:

3

Per aggiungere alla risposta di Rob, per coloro che cercano una risposta a livello di applicazione più ampia, mi hanno aiutato a trovare i temi predefiniti completi, che sono disponibili e in \(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic folder di un'installazione di Windows SDK, in themeresources.xaml.

In questo è un ResourceDictionary per impostazione predefinita, HighContrast e Light. La chiave predefinita gestisce il tema Dark in UWP, dal momento che è l'impostazione predefinita a cui non viene trovato il ResourceDictionary "Dark" predefinito.

il difetto ed Luce temi hanno quasi 1000 colori specifici di controllo, o più generico "SystemControlForeground ..." colori come il Rob ha mostrato, ma in UWP sono per lo più basate sui seguenti 25 categorie di colore:

  • 24 system colors
  • SystemAccentColor, un colore definito dall'utente a livello di sistema operativo, che i documenti UWP ha una pagina intera su in design & UI> Stile> colore
    • Esistono 6 tonalità più chiare e più scure di quanto sopra (SystemAccentColorLight1, ...Dark1, ecc.) Ma non vengono utilizzate nei dizionari di risorse predefiniti. Tuttavia, le opacità di .6, .8 e .9 di quel colore sono usate una manciata di volte, le uniche opacità del tempo sono usate.

Poi ci sono gli oltre 300 categorie di colore da Windows 8.1 lasciato in, che seleziona manualmente un colore specifico, la cui estensione è visibile here

L'unica eccezione a quanto sopra è che lo stile InkToolBar deriva quasi esclusivamente dai colori ad alto contrasto.

Il tema del contrasto elevato, si basa notevolmente su 8 sistemi aggiuntivi [vuoti] Colori che, analogamente allo SystemAccentColor, sono valori a livello di sistema operativo. Sono definiti dai modelli e/o dall'utente se hanno scelto un tema con contrasto elevato, che è un'opzione che Windows 10 ha nelle sue impostazioni di personalizzazione. Contrasto elevato è anche una funzionalità di accessibilità, quindi penso che eviterò di ignorare ResourceDictionary, indipendentemente dal marchio dell'app.

Ma efficacemente, ignorando lo SystemAccentColor ei 24 colori [bianco] del sistema nel framework XAML, è possibile effettuare il cambiamento di centinaia di scelte di colore specifiche in modo coerente attraverso un'app.