2015-05-22 17 views
11

मैं विंडोज 10 में कुछ स्टाइल-रंगों को ओवरराइड करने की कोशिश कर रहा हूं लेकिन मैं इसे काम नहीं कर सकता।विषय ब्रश ओवरराइड करें विंडोज 10 यूडब्ल्यूपी

मेरे App.xaml इस तरह दिखता है:

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

और मेरे Theme.xaml इस

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

तरह लग रहा है हालांकि यह काम नहीं करता है, यह हावी नहीं होता कहीं भी शैली।

+0

"डिफ़ॉल्ट" कुंजी डार्क थीम से संबंधित है, "लाइट" कुंजी के साथ एक नई लाइन जोड़ने का प्रयास करें। StaticResource और ThemeResource के बीच अंतरों का भी ध्यान रखें। –

उत्तर

6

आपके द्वारा सेट की जा रही शैली विंडोज 8 ऐप्स के लिए हैं। यूनिवर्सल विंडोज ऐप्स द्वारा उपयोग की जाने वाली शैलियों को बहुत सरल बनाया गया है।

उन्हें ढूंढने का सबसे आसान तरीका है अपने सूची बॉक्स को किसी पृष्ठ पर जोड़ना, डिजाइनर में राइट क्लिक करें, और टेम्पलेट संपादित करें का चयन करें ... टेम्पलेट की एक प्रति बनाएं और उपयोग किए गए नाम देखें।

नियंत्रण-विशिष्ट वाले होने के बजाय सभी नियंत्रण अब संभव ब्रश का उपयोग करते हैं।

उदाहरण के लिए, ListBox अपने अग्रभूमि, पृष्ठभूमि के लिए निम्नलिखित ब्रश का उपयोग करता है, और BorderBrush:

  • SystemControlForegroundBaseHighBrush
  • SystemControlBackgroundChromeMediumLowBrush
  • SystemControlForegroundBaseHighBrush
+0

असल में मैंने यही किया। ओवरड्रिड सर्चबॉक्स शैली है: http://pastebin.com/39aG751n फिर भी यह कुछ रंगों को बदलने के लिए काम नहीं करता है जैसे कि सर्चबॉक्स हिट हाइलाइट फोरग्राउंडथीमब्रश और सर्चबॉक्स हिट हाइलाइट सिलेक्टेड फोरग्राउंडथीमब्रश – robertk

+0

यह विंडोज 10 आईओटी/यूडब्ल्यूपी के आरटीएम संस्करण में मेरे लिए काम करता है। उदाहरण के लिए कष्टप्रद गुलाबी डिफ़ॉल्ट उच्चारण ब्रश को ओवरराइड करने के लिए और अपने ब्रांड का रंग वहां रखें: <सॉलिडकॉलरब्रश एक्स: कुंजी = "सिस्टम कंट्रोल फॉरवर्ड एक्सेन्टब्रश" रंग = "{स्टेटिक रिसोर्स आपके ब्रैंडकॉलर रिसोर्सकी}" /> –

3

के लिए रोब के जवाब देने के लिए जोड़ने के लिए, जो व्यापक ऐप-व्यापी प्रतिक्रिया की तलाश में हैं, इससे मुझे पूर्ण डिफ़ॉल्ट थीम खोजने में मदद मिली, जो उपलब्ध हैं e\(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic folder विंडोज़ एसडीके स्थापना के, themeresources.xaml में।

इसमें डिफ़ॉल्ट, हाईकंट्रास्ट और लाइट के लिए संसाधन डिक्शनरी है। डिफ़ॉल्ट कुंजी UWP में डार्क थीम को संभालती है, क्योंकि यह तब डिफ़ॉल्ट होगा जब कोई डिफ़ॉल्ट "डार्क" संसाधन डिक्शनरी नहीं मिलेगा।

डिफ़ॉल्ट और लाइट विषयों रोब तरह से पता चला है लगभग 1000 नियंत्रण विशेष रंग, या अधिक सामान्य रंग है "SystemControlForeground ...", लेकिन UWP में वे अधिकतर निम्नलिखित 25 रंग श्रेणियों के आधार पर कर रहे हैं:

  • 24 system colors
  • SystemAccentColor, एक OS चौड़ा उपयोगकर्ता परिभाषित रंग जो UWP डॉक्स के बारे में डिजाइन के तहत & यूआई> शैली एक पूरे पृष्ठ है> रंग
    • उपरोक्त के 6 हल्के और गहरे रंग के रंग हैं (SystemAccentColorLight1, ...Dark1, आदि) लेकिन इन्हें डिफ़ॉल्ट संसाधन शब्दकोशों में उपयोग नहीं किया जाता है। हालांकि, उस रंग की .6, .8 और .9 क्षमताओं का उपयोग कुछ हद तक किया जाता है, केवल समय की अक्षमता का उपयोग किया जाता है।

तो फिर वहाँ Windows 8 से 300+ रंग श्रेणियां हैं।1 कि में छोड़ दिया जाता है, जो स्वयं एक विशिष्ट रंग, किस हद तक की आप देख सकते हैं here

एकमात्र अपवाद ऊपर करने के लिए है कि InkToolBar स्टाइल लगभग विशेष रूप से उच्च कंट्रास्ट रंग से ली गई है लेने।

उच्च कंट्रास्ट विषय, 8 अतिरिक्त सिस्टम [रिक्त] रंग कि, SystemAccentColor के समान है, ओएस चौड़ा मान हैं से भारी खींचती है। वे टेम्पलेट्स और/या उपयोगकर्ता द्वारा परिभाषित किए जाते हैं यदि उन्होंने उच्च कंट्रास्ट थीम चुना है, जो विंडोज 10 की अपनी निजीकरण सेटिंग्स में एक विकल्प है। हाई कंट्रास्ट भी एक एक्सेसिबिलिटी फीचर है, इसलिए मुझे लगता है कि मैं रिसोर्स डिक्शनरी को ओवरराइड करने से बचूंगा, इससे कोई फर्क नहीं पड़ता कि ऐप ब्रांडिंग।

लेकिन प्रभावी रूप से, SystemAccentColor और XAML ढांचे में 24 सिस्टम [रिक्त] रंगों को ओवरराइड करके, आप एक ऐप में लगातार तरीके से सैकड़ों विशिष्ट रंग विकल्पों में परिवर्तन को प्रभावित कर सकते हैं।

संबंधित मुद्दे