2010-05-28 23 views
25

लेने के लिए रिक्त WPF ListView को खींचें मुझे हमेशा एक स्टैकपैनल जैसे गतिशील लेआउट नियंत्रण के अंदर ListView के साथ समस्याएं होती हैं।खाली स्थान

अभी मेरे पास एक स्टैकपनेल के साथ रूट-कंट्रोल के रूप में एक विंडो है। Stackpanel पूरी तरह से streches और पूरी खिड़की लेता है। स्टैकपैनल के अंदर कुछ अन्य नियंत्रण जैसे टेक्स्टबॉक्स और बटन सभी गठबंधन ठीक हैं।

अंतिम वस्तु एक सूची दृश्य है। मैं सूची दृश्य को शेष स्थान को स्टैकपैनल से ले जाना चाहता हूं लेकिन ऐसा नहीं है। यहां तक ​​कि वर्टिकल एलाइनमेंट = "स्ट्रेच" मुझे केवल कॉलम हेडर मिलते हैं। ListView केवल तब बढ़ता है जब आइटम इसमें जोड़े जाते हैं। तो मुझे मैन्युअल रूप से ListView ऊंचाई सेट करना होगा।

मैं सूची दृश्य को रिक्त पैनेल में खाली स्थान को खाली होने पर भी कैसे बना सकता हूं?

+0

क्या आप कुछ एक्सएएमएल पोस्ट कर सकते हैं। – zendar

उत्तर

30

इसका ListView से कोई लेना देना नहीं है। यह स्टैकपैनल की "गलती" है। एक स्टैकपैनल में बच्चे के आइटम हमेशा केवल उन्हें आवश्यक स्थान (स्टैकपैनल के अभिविन्यास की दिशा में) का उपभोग करते हैं। इस तरह StackPanel डिज़ाइन किया गया है। इसके बजाए एक डॉकपैनल का उपयोग करें, वहां आप अंतिम आइटम को LastChildFill="true" (true का उपयोग कर छोड़ने वाली सभी जगहों को भरने के लिए डिफ़ॉल्ट कर सकते हैं, इसलिए स्पष्टीकरण की आवश्यकता नहीं है)।

<DockPanel Background="Green"> 
    <Button DockPanel.Dock="Top">Text</Button> 
    <ListView DockPanel.Dock="Top"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn/> 
      </GridView> 
     </ListView.View> 
    </ListView>  
</DockPanel> 
11

ग्रिड का उपयोग करने के बारे में कैसे? ग्रिड इस तरह के लेआउट के लिए बने होते हैं। डॉकपैनल भी एक अच्छा सुझाव है।

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <TextBlock Grid.Row="0" Text="row1"/> 
    <Button Grid.Row="1" Content="row2"/> 
    <ListView Grid.Row="2"> 
    <ListViewItem Content="Text"/> 
    <ListViewItem Content="Text1"/> 
    <ListViewItem Content="Text2"/> 
    </ListView> 
    </Grid> 

महत्वपूर्ण हिस्सा ऊंचाई है = "*", इस पंक्ति बताता सभी उपलब्ध स्थान को लेने के लिए, तो आप इस बाहर छोड़ अगर आप चाहते हैं के रूप में यह डिफ़ॉल्ट व्यवहार है सकते हैं।

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