2015-05-22 9 views
11

Próbuję przesłonić niektóre kolory stylu w systemie Windows 10, ale nie mogę go uruchomić.Zastępowanie pędzla kompozycji Windows 10 UWP

Moja App.xaml wygląda następująco:

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

A moja Theme.xaml wygląda to

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

Jednak to nie działa, to nie zastępują styl w dowolnym miejscu.

+0

Klawisz "Default" jest powiązany z Dark Theme, spróbuj dodać nową linię za pomocą przycisku "Light". Zwróć także uwagę na różnice między StaticResource i ThemeResource. –

Odpowiedz

6

Style, które ustawiasz, są przeznaczone dla aplikacji systemu Windows 8. Style używane w aplikacjach Universal Windows są znacznie uproszczone.

Najprostszym sposobem ich znalezienia jest dodanie listy do strony, kliknięcie jej prawym przyciskiem myszy w projektancie, a następnie wybranie polecenia Edytuj szablon ... Utwórz kopię szablonu i zobacz zastosowane nazwy.

Wszystkie elementy sterowania korzystają teraz z tych samych pędzli, o ile jest to możliwe, a nie z tych sterujących.

Na przykład ListBox używa następujących szczotki do jego planie, tło, i BorderBrush:

  • SystemControlForegroundBaseHighBrush
  • SystemControlBackgroundChromeMediumLowBrush
  • SystemControlForegroundBaseHighBrush
+0

Właściwie to właśnie zrobiłem. Overriden stylu SearchBox jest: http://pastebin.com/39aG751n jeszcze nie działa, aby zmienić niektóre kolory, takie jak SearchBoxHitHighlightForegroundThemeBrush i SearchBoxHitHighlightSelectedForegroundThemeBrush – robertk

+0

To działało dla mnie w wersji RTM Windows 10 IoT/UWP. Na przykład, aby zastąpić irytujący różowy domyślny pędzel akcentujący i umieścić tam kolor swojej marki:

3

Aby dodać odpowiedź Roba, na Ci, którzy szukają szerszej odpowiedzi w całej aplikacji, pomogli mi znaleźć pełne domyślne motywy, które są dostępne e w \(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic folder instalacji zestawu Windows SDK w themeresources.xaml.

Jest to zasób ResourceDictionary for Default, HighContrast i Light. Domyślny klucz obsługuje motyw Dark w UWP, ponieważ jest to domyślne ustawienie, gdy nie znaleziono domyślnego "Dark" ResourceDictionary.

Default and Light motywy mają prawie 1000 kolorów kontrolne specyficzne lub bardziej ogólnych „SystemControlForeground ...” kolory jak Rob pokazał, ale w większości są one UWP na podstawie następujących 25 kategoriach kolorystycznych:

  • 24 system colors
  • SystemAccentColor, użytkownik zdefiniowane kolor OS-wide którego UWP docs ma całą stronę o mocy Projektowania & UI> Style> Kolor
    • Jest 6 jaśniejszych i ciemniejszych odcieni powyższych (SystemAccentColorLight1, ...Dark1, itp.), Ale nie są one używane w domyślnych słownikach zasobów. Jednak .6, .8 i .9 nieprzezroczystości tego koloru są używane garść razy, używane są tylko zmętnienia czasowe.

Następnie istnieją 300+ kategorie kolorów z Windows 8.1, które pozostały, które ręcznie wybierają określony kolor, którego zakres można zobaczyć

Jedynym wyjątkiem od powyższego jest to, że styl InkToolBar pochodzi niemal wyłącznie z kolorów o wysokim kontraście.

The High Contrast motyw, ciągnie mocno od 8 dodatkowy system [Puste] kolory, które, podobnie jak SystemAccentColor, są wartościami OS-wide. Są one definiowane przez szablony i/lub użytkownika, jeśli wybrano motyw wysokiego kontrastu, który jest opcją, którą system Windows 10 ma w ustawieniach personalizacji. Wysoki kontrast to także funkcja ułatwień dostępu, więc myślę, że uniknę tego przesłonięcia tego ResourceDictionary, niezależnie od marki aplikacji.

Ale skutecznie, przesłonięcie SystemAccentColor i 24 kolorów systemu [puste] w strukturze XAML umożliwia równomierną zmianę setek wybranych kolorów w całej aplikacji.