TabControl始终调整为选定的选项卡项?

时间:2012-03-22 07:01:45

标签: .net wpf xaml tabcontrol

我有一个WPF TabControl,包含两个不同宽度和高度的TabItem。奇怪的是当我在项目之间切换时,TabControl的大小会调整大小以适合所选的标签项。例如,如果我单击较小的TabITem,TabControl会变小,如果我选择较大的TabControl,它会变大。

我认为从用户的角度来看这看起来很愚蠢,而在普通的标签GUI(例如Windows属性)中并非如此。是否可以设置宽度和高度以适应最大的项目?我想尝试避免必须设置一个恒定值

2 个答案:

答案 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 马丁