我有一个WPF TabControl,包含两个不同宽度和高度的TabItem。奇怪的是当我在项目之间切换时,TabControl的大小会调整大小以适合所选的标签项。例如,如果我单击较小的TabITem,TabControl会变小,如果我选择较大的TabControl,它会变大。
我认为从用户的角度来看这看起来很愚蠢,而在普通的标签GUI(例如Windows属性)中并非如此。是否可以设置宽度和高度以适应最大的项目?我想尝试避免必须设置一个恒定值
答案 0 :(得分:3)
你应该更好地拥有相对于窗口大小的固定TabControl大小,并根据TabControl的大小调整TabItems的大小。
编辑:
确保包含TabControl
的行或列未自动调整大小。如果您的代码如下所示,则TabControl
将根据有效TabItem
调整大小。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height=".20*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height=".20*"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="1" BorderBrush="Red" BorderThickness="1">
<TabItem Header="Blue">
<Rectangle Width="200" Height="200" Fill="Blue"></Rectangle>
</TabItem>
<TabItem Header="Black">
<Rectangle Width="100" Height="100" Fill="Black"></Rectangle>
</TabItem>
</TabControl>
</Grid>
如果您将上述代码中的行<RowDefinition Height="Auto"/>
更改为<RowDefinition Height="*"/>
,则会解决问题。
您也可以共享代码,我们可以查看它。
答案 1 :(得分:0)
如果你不想要一个固定的尺寸,我会看到另一个选择,但这个在性能方面并不便宜。 您需要知道的是第二个标签需要的实际宽度和高度。这意味着您可以将TabControl的高度和宽度绑定到较大项目的DesiredSize以及一些额外空间。 但由于第二项可能尚未测量(检查IsMeasureValid属性),因此您需要调用UpdateLayout来执行控件的整个布局。
但总的来说我真的不建议你走这条路,因为玩布局通常会让人痛苦.... 我知道这不是你要求的,而是来自经验 - &gt;不要这样做。
为什么不给出固定大小并添加滚动查看器?或者我们使用dockpanel并将所有内容停靠在某处,并为tabcontrol提供剩余的空间,以便它总是填满你的窗口。
HTH 马丁