2010-03-26 64 views

回答

26

您可以將行內容的可見性設置爲「摺疊」。這僅在RowDefinition的Height屬性設置爲「Auto」時才起作用,因此行大小基於其內容。

例如,

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

    <Border Grid.Row="0" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border> 
    <Border Grid.Row="1" BorderThickness="1" BorderBrush="Black" Visibility="Collapsed"><TextBlock>Hidden Row</TextBlock></Border> 
    <Border Grid.Row="2" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border> 
</Grid> 
+0

正是我一直在尋找。謝謝。 – 2010-03-26 09:35:15

+1

如果您有多列,你會怎麼做?隱藏每個元素都不太實際... – 2012-12-01 14:36:04

+1

Clement-將容器中的每個元素包裝在容器中,例如另一個網格,並簡單地顯示/隱藏/摺疊容器的可見性。 – Kurren 2013-04-16 09:08:42

3

其實我只是問了同樣的問題,幾天以前,這裏看看:

Hide grid row in WPF

基本上設置rowHeight爲自動,然後設置可見性=「摺疊」將爲您隱藏行。我遇到的唯一問題是邊緣,但那是微不足道的。至少該行被隱藏了。

+1

關於利潤的好處,謝謝。 – 2010-03-26 09:34:55

1

只是這樣做:

XAML:

<Grid.RowDefinitions> 
    <RowDefinition Height="1*" x:Name="name1" /> 
    <RowDefinition Height="Auto" x:Name="name2" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
</Grid.RowDefinitions> 

C#的崩潰:

name1.Height = new GridLength(0); 
name2.Height = new GridLength(0); 

C#能見度:

name1.Height = new GridLength(1, GridUnitType.Star); 
name2.Height = GridLength.Auto;