我正在尝试使TabControl根据其外部空间(它位于StackPanel中)自动调整大小:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="100">
<Grid>
<StackPanel>
<TabControl
BorderBrush="Red"
BorderThickness="2"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
</TabControl>
</StackPanel>
</Grid>
</Window>
上面的代码片段会生成以下窗口,而我希望红色边框到达窗口的底部:
答案 0 :(得分:19)
问题在于你StackPanel
。 StackPanels不会伸展他们的孩子。
相反,请使用DockPanel
:最后一个孩子将被拉伸以填充剩余空间(请参阅LastChildFill,默认为true
)。
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="100">
<Grid>
<DockPanel>
<TabControl BorderBrush="Red" BorderThickness="2">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
</TabControl>
</DockPanel>
</Grid>
</Window>
无需明确设置VerticalAlignment
,因为its default value已经Stretch
。
答案 1 :(得分:4)
您可以将高度绑定到父窗口的实际高度。
<TabControl
BorderBrush="Red"
BorderThickness="2"
Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}}}">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
</TabControl>