TabControl.VerticalAlignment = 拉伸不做任何事情
Posted
技术标签:
【中文标题】TabControl.VerticalAlignment = 拉伸不做任何事情【英文标题】:TabControl.VerticalAlignment = Stretch doesn't do anything 【发布时间】:2010-12-30 08:02:54 【问题描述】:我正在尝试使 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>
上面的 sn-p 产生以下窗口,而我希望红色边框到达窗口的底部:
【问题讨论】:
【参考方案1】:问题是你的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
。
相关链接:Panels Overview on MSDN
【讨论】:
我用了你的代码,什么都没有; TabControl 的垂直大小未按预期停靠;我认为问题在于 TabControl 而不是 StackPanel。 非常奇怪......在这里工作得非常好:我将上面的代码复制并粘贴到 XAML 窗口中 -> 红色边框延伸到整个窗口。你能再试一次吗? 您的解决方案确实有效。不幸的是,根据我的窗户的情况,有很多父母没有成功。我的特定问题的解决方案是将其嵌入到 Grid 中,将行的高度设置为 *.感谢您的所有帮助。【参考方案2】:您可以将高度绑定到父窗口的实际高度。
<TabControl
BorderBrush="Red"
BorderThickness="2"
Height="Binding Path=ActualHeight,
RelativeSource=RelativeSource Mode=FindAncestor,
AncestorType=x:Type Window">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
</TabControl>
【讨论】:
以上是关于TabControl.VerticalAlignment = 拉伸不做任何事情的主要内容,如果未能解决你的问题,请参考以下文章