2013-05-31 6 views
6

पर पंक्ति ऊंचाई को सीमित करें मैंने अभी ग्रिडप्लिटर के साथ प्रयोग करना शुरू कर दिया है और बहुत अजीब व्यवहार में ठोकर खाई है और मैं इसे ठीक नहीं कर सकता। स्पष्ट रूप से दूसरों के पास समान समस्याएं हैं (Google के अनुसार), लेकिन कोई सहायक टिप्पणी नहीं थी।ग्रिडप्लिटर: विंडो आकार

मेरे पास 2 पंक्तियों वाला ग्रिड है। शुरूआत में नीचे एक Hight 250 है। शीर्ष पंक्ति * के साथ बाकी ले जाती है। जब मैं स्प्लिटर के साथ पंक्तियों का आकार बदलता हूं तो शीर्ष पंक्ति के लिए व्यवहार की अपेक्षा की जाती है। लेकिन जब मैं स्प्लिटर को ऊपर और प्रोग्राम विंडो के पीछे खींचता हूं, तो नीचे की पंक्ति की सामग्री विंडो से बाहर हो जाएगी (= जब तक यह खत्म नहीं हो जाती है)। मैं उम्मीद करता हूं कि मैं प्रत्येक पंक्ति को मूल कंटेनर से बड़ा नहीं कर सकता।

<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition MinHeight="250" Height="250"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <GridSplitter x:Name="splitter" 
     ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto" 
     Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" /> 
    <Grid Grid.Column="0" Grid.Row="0"> 
    </Grid> 
    <Grid Grid.Column="0" Grid.Row="1">    
    </Grid> 
</Grid> 

यह मेरा कोड है। दोनों पंक्तियों की सामग्री को फिर से ग्रिड में होस्ट किया जाता है और सादगी के लिए हटा दिया गया है। दोबारा: शीर्ष पंक्ति के लिए आकार बदलना ठीक काम करता है। लेकिन नीचे पंक्ति को अनंतता में बदल दिया जा सकता है। यह उम्मीद के अनुसार काम करता है अगर मैं MaxHeight हार्ड-कोड करता हूं। लेकिन उसे खिड़की के आकार पर निर्भर होना है।

उत्तर

4

कोशिश बदलते अपने निम्नलिखित से पीछे नहीं RowDefinition:

<RowDefinition MinHeight="250" MaxHeight="{Binding ElementName=grid_main, Path=ActualHeight}" Height="250"/> 

यह सुनिश्चित होगा कि पंक्ति की ऊँचाई विंडो का आकार से अधिक नहीं होगा।

+0

उत्तर के लिए धन्यवाद। यह काम करता है। लेकिन शीर्ष पंक्ति के लिए 'मिनहेइट' को लागू करना ... मुश्किल है ... डब्ल्यूपीएफ से निपटने पर मैं आम तौर पर sh * t को शाप देता हूं और किसी बिंदु पर मेरे पास वास्तव में एक शानदार समाधान है जो मुझे लगता है "वाह , डब्ल्यूपीएफ वास्तव में सभी के बाद अच्छा है "। यकीन नहीं है कि मैं इस विषय पर इस बिंदु तक पहुंच जाऊंगा हालांकि ... – Jan

+0

मुझे पता है कि आपका क्या मतलब है, मैं वही तरीका महसूस करता हूं। शीर्ष पंक्ति के लिए मिनीहेइट को परिभाषित करने का एक समाधान है, भले ही यह सुरुचिपूर्ण है या बहस योग्य नहीं है! यदि आप मल्टीवैल्यू कनवर्टर का उपयोग करते हैं तो आप इसे पहले ग्रिड के वास्तविक हाइट को पास कर सकते हैं, और शीर्ष पंक्ति मिनहाइट और अंतर वापस कर सकते हैं। दूसरी पंक्ति पर अपनी अधिकतम ऊंचाई के रूप में इस मान का उपयोग करें। –

+0

मैंने ऑफ़सेट लागू करने के लिए 'IValueConverter' का उपयोग किया था। – Peter

0

रिचर्ड का समाधान मेरे लिए काम नहीं करता था (ग्रिड का वास्तविक हॉल पंक्ति ऊंचाई के साथ खिड़की के आकार के साथ विस्तारित)।

स्नूप का उपयोग करके, मैंने पाया कि एक पूर्वजों सामग्री का वास्तविकता बढ़ रहा था। इस प्रकार निम्न निचली पंक्ति परिभाषा मेरे लिए काम करती है, हालांकि मैं अभी भी शीर्ष या निचली पंक्तियों पर मिनहेइट सेट करता हूं:

<RowDefinition Height="430" 
       MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentPresenter}}, Path=ActualHeight}"/> 
संबंधित मुद्दे