我需要刪除Grid.Row佔用的空間。我可以摺疊(刪除)我放置在Grid.Row中的控件,但是由於RowDefinition具有固定的大小(高度),即使在刪除子控件後仍然會看到空行。如何摺疊RowDefinition?
有沒有辦法來摺疊RowDefinition/Grid.Row?
感謝您的關注。
我需要刪除Grid.Row佔用的空間。我可以摺疊(刪除)我放置在Grid.Row中的控件,但是由於RowDefinition具有固定的大小(高度),即使在刪除子控件後仍然會看到空行。如何摺疊RowDefinition?
有沒有辦法來摺疊RowDefinition/Grid.Row?
感謝您的關注。
你可以看到here一個操縱網格中的行和列的例子。儘管文檔是針對.Net(WPF),但它仍然適用於WP7/Silverlight。
我個人會在這種方式使用網格之前三思。可能是,無論您嘗試使用堆棧面板還是任何其他開箱容器控件都可以實現。
爲了完成,我使用了grid.Rowdefinitions.RemoveAt(index)。我同意放置一個StackPanel可能是這種情況下更好的選擇。 –
您可以設置RowDefinition.Height="Auto"
,並且可以將該固定高度分配給該行中的實際視覺。這樣,當視覺可見時,該行不會佔用固定的寬度,該寬度被分配給行定義。
這是對問題的簡單回答。謝謝!。我知道它很古老,但是當你意味着身高時,你寫了一個小小的錯字,寫下了寬度。 –
設置RowDefinition.Height ="Auto"
不適合所有情況,因爲我們經常需要*我們的行的大小。
而不是動態/編程地添加和刪除列表中的行,將第一行內容拉伸到下一行更容易和更安全。
這可以通過使用DataTrigger在網格上的第一項上設置Grid.RowSpan來完成。下面是一個完整的例子 - 只需將其粘貼到新的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>
爲您的網格首先設置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);
的可能的複製[隱藏WPF中的網格行](http://stackoverflow.com/questions/2502178/hide-grid-row-in-wpf) – Palec