2012-03-08 5 views
9

में एक चयनित ListViewItem स्टाइलिंग मैं नीचे लिखे गए चित्र में चयनित आइटम के सीमा की उपस्थिति को बदलना चाहता हूं।विंडोज 8 सीपी

enter image description here

मैं पहले से ही msdn.com पर और इंटरनेट पर चारों ओर देख रहा है, लेकिन मैं उपयोगी कुछ भी नहीं पाया है।

मैं यह कैसे कर सकता हूं?

+0

क्या आप WPF या मेट्रो XAML ऐप का उपयोग कर रहे हैं? वे पूरी तरह से अलग ढांचे हैं लेकिन आपने इसे दोनों के साथ टैग किया है। –

+0

मैं मेट्रो एक्सएएमएल ऐप का उपयोग कर रहा हूं। – t4nky

उत्तर

16

चयन उपस्थिति ListViewItem के लिए ControlTemplate का हिस्सा है। संपूर्ण सूची दृश्य के लिए टेम्पलेट को संशोधित करने के लिए प्रत्येक आइटम में स्टाइल लागू करने के लिए ItemContainerStyle का उपयोग करें, जिसमें टेम्पलेट का एक संशोधित संस्करण हो सकता है।

<ListView> 
    <ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
      ... 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </ListView.ItemContainerStyle> 
</ListView> 

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

मिश्रण में, अपने ListView राइट क्लिक करें और का चयन करें:

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

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

+0

धन्यवाद, यह वही था जो मैं खोज रहा था। मैं भूल रहा हूं कि इस सामग्री के साथ मदद करने के लिए मेरे पास विजुअल स्टूडियो के लिए मिश्रण है। –

2

मुझे एक और समाधान मिला है जो दूसरों के लिए सहायक हो सकता है: App.xaml में विशिष्ट ब्रश संसाधनों को ओवरराइड करें। यह किसी भी डिफ़ॉल्ट शैली क्लोनिंग के बिना काम करता है, और के रूप में बस के रूप में सरल है:

<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="myColor1"/> 
<SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="myColor2"/> 

बेशक, वहाँ अधिक झाड़ियों कि ओवरराइड किया जा सकता हैं, और उनमें से एक सूची यहां पाया जा सकता: ListViewItem styles and templates

ध्यान दें कि यह दृष्टिकोण एप्लिकेशन में सभी ListViews के लिए उपस्थिति को बदलता है।