2015-05-22 5 views
11

Ich versuche, einige Stilfarben in Windows 10 zu überschreiben, aber ich kann es nicht zum Laufen bringen.Override Thema Pinsel Windows 10 UWP

Mein app.xaml sieht wie folgt aus:

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

Und mein Theme.xaml sieht wie folgt aus

<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"/> 

aber es nicht funktioniert, ist es nicht überschreiben der Stil überall.

+0

Der "Standard" -Schlüssel ist mit dunklem Thema verwandt, versuchen Sie, eine neue Zeile mit "Light" -Taste hinzuzufügen. Achten Sie auch auf die Unterschiede zwischen StaticResource und ThemeResource. –

Antwort

6

Die Stile, die Sie festlegen, sind für Windows 8-Anwendungen. Die von Universal Windows Apps verwendeten Stile sind stark vereinfacht.

Die einfachste Möglichkeit, sie zu finden, besteht darin, Ihre ListBox zu einer Seite hinzuzufügen, im Designer mit der rechten Maustaste darauf zu klicken und Vorlage bearbeiten ... Eine Kopie der Vorlage erstellen und die verwendeten Namen anzeigen.

Alle Steuerelemente verwenden jetzt dieselben Steuerelemente, wenn möglich, statt steuerungspezifische Steuerelemente.

Zum Beispiel verwendet die List-Box die folgenden Bürsten für seinen Vordergrund, Hintergrund und BorderBrush:

  • SystemControlForegroundBaseHighBrush
  • SystemControlBackgroundChromeMediumLowBrush
  • SystemControlForegroundBaseHighBrush
+0

Eigentlich habe ich das gemacht. Der überschriebene SearchBox-Stil ist: http://pastebin.com/39aG751n noch funktioniert es nicht, um einige Farben wie SearchBoxHitHighlightForegroundThemeBrush ändern und SearchBoxHitHighlightSelectedForegroundThemeBrush – robertk

+0

Dies funktionierte für mich in der RTM-Version von Windows 10 IoT/UWP. Zum Beispiel, um den nervigen rosa Standard-Akzentpinsel zu übergehen und Ihre Markenfarbe dort zu setzen:

3

zu Robs Antwort hinzuzufügen, für Diejenigen, die nach einer breiteren App-weiten Antwort suchen, hat mir geholfen, die vollständigen Standardthemen zu finden, die verfügbar sind e in \(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic folder einer Windows SDK-Installation, in themenresources.xaml.

Darin ist ein ResourceDictionary für Standard, HighContrast und Light. Die Standard-Taste behandelt das Dark-Thema in UWP, da dies standardmäßig ist, wenn kein Standard-ResourceDictionary "Dark" gefunden wird.

Der Standard und Licht Themen haben fast 1000 steuerungsspezifische Farben oder mehr generic „SystemControlForeground ...“ Farben wie Rob zeigte, aber in UWP sie sind auf den folgenden 25 Farbkategorien meist auf Basis:

  • 24 system colors
  • SystemAccentColor, ein O weites benutzerdefinierte Farbe, die die UWP docs über unter Design-& UI> Style eine ganze Seite hat> Farbe
    • Es gibt 6 hellere und dunklere Schattierungen von oben (SystemAccentColorLight1, ...Dark1, usw.), aber sie werden nicht in den Standardressourcenverzeichnissen verwendet. Jedoch werden .6, .8 und .9 Trübungen dieser Farbe einige Male verwendet, die einzigen Mal, wenn Trübungen verwendet werden.

Dann gibt es die mehr als 300 Farbkategorien von Windows 8.1, die übrig sind, die eine bestimmte Farbe manuell auswählen, deren Ausmaß man sehen kann here

Die einzige Ausnahme zu dem oben genannten ist, dass das InkToolBar Styling fast ausschließlich von den hohen Kontrastfarben abgeleitet wird.

Der hohe Kontrast Thema, zieht schwer von 8 zusätzlichen System [blank] Farben, die, ähnlich wie die SystemAccentColor, OS-weite Werte sind. Sie werden durch Vorlagen und/oder den Benutzer definiert, wenn sie ein kontrastreiches Thema auswählen, eine Option, die Windows 10 in seinen Personalisierungseinstellungen hat. Hoher Kontrast ist auch eine Eingabehilfefunktion, daher denke ich, dass ich es vermeiden werde, das ResourceDictionary außer Kraft zu setzen, unabhängig vom App-Branding.

Durch Überschreiben der und der 24 System [blank] Farben im XAML-Framework können Sie jedoch die Änderung von Hunderten von spezifischen Farboptionen in einer App konsistent durchführen.