2015-08-30 10 views
18

मैं सी # और एक्सएएमएल का उपयोग कर विंडोज 10 ऐप पर काम कर रहा हूं। मेरे पास एक सूची दृश्य है और मैं किसी चयनित आइटम का डिफ़ॉल्ट हाईलाइट रंग बदलना चाहता हूं। मैं कई कोड उदाहरण देख रहा था (जैसे this) लेकिन सभी WP8 या Win8 के लिए डिज़ाइन किए गए हैं, मैं उनको लागू करने की कोशिश कर रहा था लेकिन वे मेरे लिए काम नहीं करते हैं।UWP में चयनित सूची दृश्य आइटम का हाइलाइट रंग कैसे बदलें (विंडोज 10)

सामान्य रूप से मुझे नियंत्रणों के डिफ़ॉल्ट विषयों को संशोधित करने में समस्याएं आ रही हैं क्योंकि मुझे उपयोगी दस्तावेज़ नहीं मिलते हैं। यह बहुत अच्छा होगा अगर कोई मुझे हाइलाइट रंग के साथ मदद कर सके और मुझे अच्छी प्रलेखन की भी सिफारिश करे।

उत्तर

18

वास्तव में स्टाइल गुणों को खोजने का एक बेहतर तरीका मिश्रण का उपयोग करना है।

सबसे पहले, ब्लेंड में अपना पृष्ठ खोलें। फिर सही अपने ListView पर क्लिक करें और

संपादित अतिरिक्त टेम्पलेट्स जाना> संपादित करें जेनरेट किए गए आइटम कंटेनर (ItemContainerStyle)> एक कॉपी संपादित करें।

इसे एक नाम दें और ठीक पर हिट करें।

अब, आपने अपने ListViewItem एस के लिए पूर्ण अंतर्निर्मित शैली जेनरेट की है और यह वह जगह है जहां आप उनकी उपस्थिति, एनिमेशन और अन्य दृश्य व्यवहार के बारे में सारी जानकारी पा सकते हैं।

आप कोड के इस टुकड़े को देखने होना चाहिए -

<ListViewItemPresenter CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
         ContentMargin="{TemplateBinding Padding}" 
         CheckMode="Inline" 
         ContentTransitions="{TemplateBinding ContentTransitions}" 
         CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
         DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
         DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
         DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
         DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
         FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}" 
         FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}" 
         HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
         PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
         PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}" 
         PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
         PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}" 
         ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
         SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}" 
         SelectionCheckMarkVisualEnabled="True" 
         SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
         SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}" 
         SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}" 
         VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" /> 

लाइन SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}" देखते हैं? यही वह जगह है जहां आप अपना रंग लागू कर सकते हैं। ध्यान रखें कि Color के बजाय यह Brush प्रकार होना चाहिए।

Application.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red); 
Application.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red); 

इस तरह से आप वास्तव में तार्किक अपने आइटम अनुकूलित कर सकते हैं:

+1

धन्यवाद! यह वही है जो मुझे चाहिए था। – alecardv

10

आप XAML का उपयोग नहीं करना चाहते हैं, यहाँ एक और भी आसान तरीका है (मेरी राय में) ये सेटिंग बदलने का, ग # का उपयोग कर रहा है।

+0

आप इन्हें कहां सेट करते हैं? – yalematta

2

Bastecklein के उत्तर पर विस्तार करने के लिए। यूडब्ल्यूपी परियोजना में काम करने के लिए आप इस विधि के लिए आवेदन के बजाय ऐप का उपयोग करना चाहते हैं। जब आप अपना प्रारंभिक फ्रेम लोड करते हैं, तो आप इस कोड का उपयोग अपने App.xaml.cs में कर सकते हैं, या आप उस पृष्ठ के पीछे कोड पर संसाधन रंग सेट कर सकते हैं जिसे आप प्रभावित करना चाहते हैं।

App.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red); 
App.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red); 
+0

यदि मैं इसे App.xaml.cs में डालता हूं तो परिवर्तन पूरे एप्लिकेशन पर दिखाई देंगे? दुर्भाग्य से – alecardv

+0

, हां। हालांकि, UIElement पर ध्यान केंद्रित करने के बाद आप प्रोग्राम को प्रोग्रामेटिक रूप से बदल सकते हैं। तो यदि आप हैमबर्गर मेनू बटन पर क्लिक करते हैं, तो कस्टम कोड के साथ उस कोड को आग लगाएं। फिर यदि आप एक और तत्व पर क्लिक करते हैं जिसमें आप एक अलग रंग चाहते हैं, तो फिर कोड को आग लगाना। –

+0

किसी कारण से मेरे मामले में केवल "App.Current" संस्करण काम करता था। "एप्लिकेशन। वर्तमान" का कोई प्रभाव नहीं पड़ा। धन्यवाद दोस्त! –

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