2009-11-30 17 views
7

ढहने नहीं है यह प्रश्न unanswered question जैसा ही है।नेस्टेड एक्सपेंडर के साथ ListView

जब Expander बाहरी ListView विस्तारक सामग्री के लिए जगह बनाने के लिए बढ़ता है का विस्तार किया गया है, लेकिन Expander उसके बाद दृश्य आकार बदलने के लिए ListView मजबूर नहीं करता ढह जाता है। बाद

कम कोड, नोटों के साथ:

<!--<StackPanel>--> 
<ItemsControl> 

    <!-- ParameterGroupView --> 
    <Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4"> 
    <ListView HorizontalContentAlignment="Stretch"> 
     <Expander Header="Expander A" IsExpanded="False"> 
     <ListView HorizontalContentAlignment="Stretch"> 

      <!-- TextView --> 
      <TextBlock >Content A</TextBlock> 
      <TextBlock >Content B</TextBlock> 

     </ListView> 
     </Expander> 

    </ListView> 
    </Border> 

</ItemsControl> 
<!--</StackPanel>--> 

वास्तव में कई ParameterGroupView प्रविष्टियों न होने के कारण मैं एक ItemsControl या StackPanel में ParameterGroupView है। पर स्वैपिंग StackPanel व्यवहार को परिवर्तित नहीं करता है।

लेखक निकाला जा रहा है कोई प्रभाव नहीं होता है, लेकिन हो रही यह केवल एक ही ParameterGroupView साथ व्यवहार दिखा सकते हैं।

वहाँ बाहरी ListView कई Expander अनुभाग हो सकते हैं, और Expander भीतरी ListView अंदर कई संस्थाओं हो सकता है।

बाहरी ListView और Expander एक TreeView को बदलने के लिए है, कि सिमटने नोड्स की एक सूची के लिए इस्तेमाल किया गया था, लेकिन TreeView के ग्रिड की आंतरिक उपयोग, इसका मतलब है TextView आइटम कुचल रहे थे क्षैतिज रूप से, जैसा कि आप ईथर क्षैतिजकंटेंटलाइन = "खिंचाव" गुणों को हटा दें।

तो यदि यह सब लपेटने/तार करने का कोई और तरीका है, तो मैं भी खुश रहूंगा।

यह एक समस्या है क्योंकि हमारे TextView ब्लॉक बड़े हैं और कई Expander रों देखते हैं।

संपादित करें: TextView कोड के रूप में प्रयोग किया जाता है डेटा बाध्य है, और इस तरह गतिशील रूप से एक साथ रखा। तो ListView के लिए किसी भी प्रतिस्थापन के कुछ फार्म ItemsSource की आवश्यकता होगी

+0

मैं सामग्री आइटमों के साथ सूची दृश्य शैली की बातचीत में से कोई भी नहीं चाहता था। मैं वास्तव में एक गतिशील आकार बदलने का नियंत्रण चाहता था जो भी बाध्य हो सकता है। –

उत्तर

4

समाधान मिला, और यह विवरण पहले से ही प्रश्न में है।

ItemControl एक ItemsSource स्वीकार करता है और स्वत: आकार बदलता है। तो दो सूची दृश्य एस आइटम कंट्रोल एस को नेस्टेड ढहने के साथ बदल दिया गया है।

लेकिन वहाँ कोई स्क्रॉल, तो एक ScrollViewer साथ बाहरी ItemControl लपेटकर है, पूरा वांछित प्रभाव reproduces।

<ScrollViewer 
    VerticalScrollBarVisibility="Auto"> 
    <ItemsControl> 
     <!-- ParameterGroupView --> 
     <Border 
      BorderBrush="Brown" 
      BorderThickness="1" 
      CornerRadius="4" 
      Padding="4" 
      Height="Auto"> 
      <ItemsControl 
       HorizontalContentAlignment="Stretch"> 
       <Expander 
        Header="Expander A" 
        IsExpanded="False"> 
        <ItemsControl 
         HorizontalContentAlignment="Stretch"> 
         <!-- TextView --> 
         <TextBlock>Content A</TextBlock> 
         <TextBlock>Content B</TextBlock> 
        </ItemsControl> 
       </Expander> 
      </ItemsControl> 
     </Border> 
    </ItemsControl> 
</ScrollViewer> 

मैं सीमा और डबल सीमा अनुभागों में डबल एक्सपेंडर के साथ परीक्षण कर रहा था।

+0

बस वास्तविक एप्लिकेशन में इसका परीक्षण किया, और इससे समस्या भी हल हो गई। –

2

यहाँ करने के लिए सबसे स्पष्ट बात सूचीदृश्य के अलावा किसी अन्य कंटेनर में विस्तारक डाल करने के लिए है:

<Border BorderBrush="Brown" BorderThickness="1" CornerRadius="4" Padding="4"> 
    <StackPanel> 

     <Expander Header="Expander A" IsExpanded="False"> 
      <ListView HorizontalContentAlignment="Stretch" MinWidth="100"> 
       <ListBox Name="listb"></ListBox> 

       <!-- TextView --> 
       <TextBlock >Content A</TextBlock> 
       <TextBlock>Content B</TextBlock> 

      </ListView> 
     </Expander> 
    </StackPanel> 
</Border> 

कंटेनर सामग्री के आसपास का आकार बदलता है बस ठीक।

यदि आपके पास पूरी तरह से एक सूची दृश्य (जो संभव है) में होना चाहिए तो मुझे सूची के दृश्य को आसानी से आकार बदलने के लिए एक तरीका नहीं पता है (पूरी चीज के स्पष्ट आकार को सेट करने से परे, जो बेकार है और उपयोगी नहीं)।यदि ऐसा है तो यह संभव है कि आपको सभी खुले विस्तारकों को प्रदर्शित करने के लिए एक नियंत्रित करने योग्य सूची बॉक्स का उपयोग करना होगा, या सामग्री को एक अलग तरीके से प्रदर्शित करना होगा (जैसे पॉपअप में, शायद?) यदि आप इसे देखना चाहते हैं सब एक नज़र में।

+0

हां, मैं सहमत हूं कि लिस्टबॉक्स गलत है, लेकिन मुझे इसकी आवश्यकता है, या ऐसा कुछ है, क्योंकि यह आइटम्ससोर्स का समर्थन करता है, जहां स्टैकपैनल नहीं है। मेरा वास्तविक प्रणाली पूर्ण डेटा बाध्य है, स्थैतिक नहीं। –