2011-10-13 9 views
8

मुझे ग्रिड.रो द्वारा कब्जा कर लिया गया स्थान निकालना होगा। मैं ग्रिड.रो में रखे गए नियंत्रण को संकुचित करने (निकालने) में सक्षम हूं, लेकिन चूंकि पंक्ति नियंत्रण को हटाने के बाद भी पंक्ति परिभाषा ने आकार (ऊंचाई) तय की है, फिर भी मुझे एक खाली पंक्ति दिखाई दे रही है।एक पंक्ति परिभाषा को कैसे पतन करें?

क्या कोई पंक्ति परिभाषा/ग्रिड को संकुचित करने का कोई तरीका है। पंक्ति?

आपकी रुचि के लिए धन्यवाद।

+0

की संभावित डुप्लिकेट [डब्ल्यूपीएफ में ग्रिड पंक्ति छुपाएं] (http://stackoverflow.com/questions/2502178/hide-grid-row-in-wpf) – Palec

उत्तर

1

आप here को ग्रिड में पंक्तियों और स्तंभों में हेरफेर करने का एक उदाहरण देख सकते हैं। भले ही दस्तावेज़ .Net (WPF) के लिए है, यह अभी भी WP7/Silverlight के लिए प्रासंगिक है।

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

+0

बस पूरा होने के लिए, मैंने ग्रिड का उपयोग किया। Rowdefinitions.RemoveAt (अनुक्रमणिका)। मैं मानता हूं कि इस परिदृश्य के लिए एक स्टैकपैनल रखना बेहतर विकल्प हो सकता है। –

7

आप RowDefinition.Height="Auto" सेट कर सकते थे और उस पंक्ति में वास्तविक दृश्य को निश्चित ऊंचाई निर्दिष्ट कर सकते थे। इस तरह जब दृश्य स्पष्ट रूप से ध्वस्त हो जाता है, तो पंक्ति पंक्ति निश्चित करने के लिए निर्दिष्ट निश्चित चौड़ाई पर कब्जा नहीं करती है।

+0

यह सवाल का सरल जवाब है। धन्यवाद!। मैं इसे बहुत पुराना जानता हूं, लेकिन आपने एक छोटा टाइपो बनाया, चौड़ाई लिखी जब आप ऊंचाई का मतलब था। –

5

RowDefinition.Height ="Auto" सेट करना सभी मामलों के लिए उपयुक्त नहीं है, अक्सर हम चाहते हैं कि * हमारी पंक्तियों का आकार बदलना।

सूची से पंक्तियों को गतिशील रूप से/प्रोग्रामेटिक रूप से जोड़ने और हटाने की बजाय, अगली पंक्ति/पंक्तियों में पहली पंक्तियों को खींचना आसान और सुरक्षित है।

यह ग्रिड पर पहले आइटम पर ग्रिड.रोस्पेन सेट करने के लिए डेटा ट्रिगर का उपयोग करके किया जा सकता है। नीचे एक पूर्ण उदाहरण है - इसे क्रिया में देखने के लिए इसे एक नई WPF विंडो में पेस्ट करें।

<Grid> 
     <Grid.Resources> 

      <BooleanToVisibilityConverter x:Key="visConverter"></BooleanToVisibilityConverter> 
     </Grid.Resources> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="*"></RowDefinition> 
     </Grid.RowDefinitions> 

     <Grid Grid.Row="0" Background="Orange"> 
      <Grid.Style> 
       <Style TargetType="Grid"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=toggle1, Path=IsChecked}" Value="False"> 
          <Setter Property="Grid.RowSpan" Value="3"></Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Grid.Style> 
     </Grid> 
     <GridSplitter Grid.Row="1" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch" Height="3" 
         Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}"></GridSplitter> 
     <Grid Name="bottomGrid" Grid.Row="2" Background="LightBlue" 
       Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}"> 
     </Grid> 
     <ToggleButton Name="toggle1" VerticalAlignment="Top">Hide/Show</ToggleButton> 
</Grid> 
1

सेट Name पहली बार अपने ग्रिड के लिए। प्रारंभ में, XAML विशेषता के माध्यम से पंक्ति ऊंचाइयों सेट:

<Grid Name="GridSize"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="3*"></RowDefinition> 
     <RowDefinition Height="1*"></RowDefinition> 
     <RowDefinition Height="2*"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid Name="A" Grid.Row="0""></Grid> 
    <Grid Name="B" Grid.Row="1""></Grid> 
    <Grid Name="C" Grid.Row="2""></Grid> 
</Grid> 

जब आप संक्षिप्त करने के लिए चाहते हैं एक RowDefinition:

A.Visibility = Visibility.Collapsed; 
GridSize.RowDefinitions[0].Height = new GridLength(0); 

आप इसे फिर से दृश्यमान बनाने के लिए चाहते हैं:

A.Visibility = Visibility.Visible; 
GridSize.RowDefinitions[0].Height = new GridLength(3, GridUnitType.Star); 
संबंधित मुद्दे