如何将网格拉伸和延伸到父边距
How to stretch and extend a grid up to a parent margin
我有一个非常简单的结构(一个更复杂的结构的简化),如下所示:
所以 xaml 是:
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border x:Name="Border1Tab3" BorderBrush="Gainsboro" BorderThickness="5" Width="200" Margin="10,10,10,10" >
</Border>
<Border x:Name="Border2Tab3" BorderBrush="Gainsboro" Background="{x:Null}" MinWidth="100" BorderThickness="5" Grid.Column="1" Margin="10,10,10,10" >
<StackPanel Name="spTab3" Margin="0" Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> <------RED
<Grid Name="grd7Tab3" Visibility="Visible" Background="Blue" ShowGridLines="True" VerticalAlignment="Stretch" Margin="10"> <----BLUE
</Grid>
</StackPanel>
</Border>
如您所见,我将红色放在堆栈面板中,将蓝色放在网格中。我想将蓝色网格扩展到所有红色堆栈面板,但结果是网格没有显示。
如果我在红色堆栈面板中放置一些东西,它只会达到内部元素的大小,而不是达到所有父元素的大小。
我是 wpf 的新手,但一般来说,如果我设置 margin=0 和 stretch schouldn't a UI element take all the speak of its parent?
感谢您的帮助
帕特里克
只需将 StackPanel
更改为 Grid
,这似乎更适合您的情况
<Border x:Name="Border2Tab3" BorderBrush="Gainsboro" Background="{x:Null}" MinWidth="100" BorderThickness="5" Grid.Column="1" Margin="10,10,10,10" >
<Grid Name="spTab3" Margin="0" Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid Name="grd7Tab3" Visibility="Visible" Background="Blue" ShowGridLines="True" VerticalAlignment="Stretch" Margin="10">
</Grid>
</Grid>
</Border>
我有一个非常简单的结构(一个更复杂的结构的简化),如下所示:
所以 xaml 是:
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border x:Name="Border1Tab3" BorderBrush="Gainsboro" BorderThickness="5" Width="200" Margin="10,10,10,10" >
</Border>
<Border x:Name="Border2Tab3" BorderBrush="Gainsboro" Background="{x:Null}" MinWidth="100" BorderThickness="5" Grid.Column="1" Margin="10,10,10,10" >
<StackPanel Name="spTab3" Margin="0" Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> <------RED
<Grid Name="grd7Tab3" Visibility="Visible" Background="Blue" ShowGridLines="True" VerticalAlignment="Stretch" Margin="10"> <----BLUE
</Grid>
</StackPanel>
</Border>
如您所见,我将红色放在堆栈面板中,将蓝色放在网格中。我想将蓝色网格扩展到所有红色堆栈面板,但结果是网格没有显示。
如果我在红色堆栈面板中放置一些东西,它只会达到内部元素的大小,而不是达到所有父元素的大小。
我是 wpf 的新手,但一般来说,如果我设置 margin=0 和 stretch schouldn't a UI element take all the speak of its parent?
感谢您的帮助 帕特里克
只需将 StackPanel
更改为 Grid
,这似乎更适合您的情况
<Border x:Name="Border2Tab3" BorderBrush="Gainsboro" Background="{x:Null}" MinWidth="100" BorderThickness="5" Grid.Column="1" Margin="10,10,10,10" >
<Grid Name="spTab3" Margin="0" Background="Red" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid Name="grd7Tab3" Visibility="Visible" Background="Blue" ShowGridLines="True" VerticalAlignment="Stretch" Margin="10">
</Grid>
</Grid>
</Border>