2013-02-20 77 views
5

मेरे पास C++/CX कोड में ListView प्रदर्शित करने के लिए यह XAML है। ListView का चयन मेनू के रूप में किया जाएगा।कोई पैडिंग के साथ लिस्टव्यू चयन डिस्प्ले और कोई चेकमार्क

<ListView x:Name="itemsListView" 
ItemsSource="{Binding Source={StaticResource MenuDataSourceCVS}}" 
HorizontalAlignment="Stretch" 
Width="230" 
Margin="0,45,0,0" 
VerticalAlignment="Top" 
Grid.Row="1" 
SelectionChanged="itemsListView_SelectionChanged" SelectionMode="Single" 
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" 
FontFamily="Global User Interface"> 
<ListView.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal" Height="40" Width="230"> 
      <TextBlock Text="{Binding Name}" 
       Margin="10,5" Width="150" Height="30" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch"/> 
      <Border Height="30" Width="30" Margin="5"> 
       <Image Source="{Binding ImageSrc}" Stretch="Fill"/> 
      </Border> 
     </StackPanel> 
    </DataTemplate> 
</ListView.ItemTemplate> 
</ListView> 

जैसा कि आप आंकड़े में देख सकते हैं कि चयन सभी कॉलम पर कब्जा नहीं करता है और चयनित होने पर एक चेकमार्क प्रदर्शित करता है।

ListView Selection with checkmark and padding

इस गद्दी और सही का निशान को खत्म करने के लिए एक रास्ता है?

उत्तर

16

आपको ब्लेंड में अपना दृश्य खोलने की आवश्यकता है, फिर सूची पर राइट क्लिक करें और "अतिरिक्त टेम्पलेट्स संपादित करें"/"जेनरेटेड आइटम कंटेनर (ItemContainerStyle) संपादित करें"/"एक प्रतिलिपि संपादित करें" का चयन करें। फिर ListView द्वारा उत्पन्न होने पर Style को Style संपादित कर सकते हैं जब यह आपके आइटम के साथ पॉप्युलेट हो। बाईं ओर स्थित "राज्य" टैब में आप ListViewItem द्वारा उपयोग किए जाने वाले राज्य देख सकते हैं। जब आप उनमें से एक का चयन करते हैं - डिज़ाइन सतह दिखाती है कि ListViewItem उस स्थिति में कैसा दिखता है और यह रिकॉर्डिंग मोड में भी स्विच करता है जहां आप टेम्पलेट के विभिन्न तत्व गुणों के गुण मान को परिभाषित कर सकते हैं। फिर आप देख सकते हैं कि कौन से तत्व दृश्य राज्य एनिमेशन से प्रभावित होते हैं और या तो इन एनिमेशन को संशोधित करते हैं या तत्वों को स्वयं हटाते हैं। यदि आप ब्लेंड में कोई तत्व हटाते हैं - सभी संबंधित दृश्य स्थिति एनिमेशन स्वचालित रूप से हटा दिए जाएंगे, इसलिए आपके मामले में आप देख सकते हैं कि SelectionStatesVisualStatesGroupSelected स्थिति SelectionBackground तत्व Opacity से 1 में बदलती है। आप या तो उस लक्ष्य को Opacity मान संशोधित कर सकते हैं सभी राज्य जो इसे किसी अन्य वांछित मूल्य में संशोधित करते हैं या "ऑब्जेक्ट्स और टाइमलाइन" पैनल में इसे चुनकर SelectionBackground तत्व को हटाते हैं (यह वास्तव में इसे सभी राज्यों के लिए टेम्पलेट से निकाल देगा और इसे प्रभावित करने वाले सभी एनिमेशन को हटा देगा)। फिर आप HintGlyphBorder, SelectingGlyph, SelectedCheckMarkOuter को भी हटाना चाहते हैं।

पैडिंग को हटाने के लिए - छोटे लाल रिकॉर्डिंग बटन पर क्लिक करके या "राज्य" टैब में वर्तमान में प्रदर्शित स्थिति को "बेस" पर स्विच करके राज्य के लिए रिकॉर्डिंग अक्षम करना सुनिश्चित करें, फिर ContentBorder चुनें और इसे बदलें Margin "गुण" टैब में 0,0,0,0 में और SelectedBorder के लिए ऐसा ही करें।

यहाँ ब्लेंड से व्याख्या किए गए स्क्रीनशॉट: enter image description here

+5

फ़िलिप, यह एक ब्लॉग लेख होना चाहिए। इसे लिखें ताकि मैं उससे लिंक कर सकूं! –

+0

क्यों न सिर्फ इस उत्तर से लिंक करें - http://stackoverflow.com/questions/14987745/listview-selection-display-with-no-padding-and-no-checkmark/14990251#14990251? :) –

+2

गंभीरता से स्टैक ओवरफ्लो पर बहुत अच्छी सामग्री है - मुझे खुशी है कि मेरे ब्लॉग पर मेरे कुछ जवाब होंगे, लेकिन मुझे इस बात का यकीन नहीं है क्योंकि हर कोई यहां पहले भी देखेंगे। –