我有一个WPF TabControl,包含两个不同宽度和高度的TabItems。奇怪的是,当我在项目之间切换时,TabControl的大小被调整为紧密匹配选定的选项卡项目。例如,如果我点击较小的TabITem,TabControl会变小,如果我选择较大的一个,它会变得更大。TabControl总是调整大小到选定的选项卡项目?
我想这会看起来但从用户的角度傻了,这不正常标签GUI的情况下,如Windows性能。是否可以设置宽度和高度以适合最大的项目?我想尝试避免设定一个恒定值
我有一个WPF TabControl,包含两个不同宽度和高度的TabItems。奇怪的是,当我在项目之间切换时,TabControl的大小被调整为紧密匹配选定的选项卡项目。例如,如果我点击较小的TabITem,TabControl会变小,如果我选择较大的一个,它会变得更大。TabControl总是调整大小到选定的选项卡项目?
我想这会看起来但从用户的角度傻了,这不正常标签GUI的情况下,如Windows性能。是否可以设置宽度和高度以适合最大的项目?我想尝试避免设定一个恒定值
好吧,如果你不希望有一个固定的大小,我看到另一个选项,但这个不便宜在性能方面。 你需要知道的是第二个标签需要的acutal宽度和高度。这意味着您可以将TabControl的高度和宽度绑定到较大项目的DesiredSize以及一些额外的空间。 但作为第二个项目可能不会已经测量(检查IsMeasureValid属性),那么你需要调用UpdateLayout请其做为控制整个布点。
但总的来说,我真的不会推荐你去那条路,因为玩布局通常是痛苦的....。 我知道这不是你要求的,而是来自经验 - >不要这样做。
为什么真的不给出一个固定的大小,并添加scrollviewers?或者我们是一个dockpanel并将所有的东西都放置在某个地方,然后给tabcontrol留下剩余的空间,这样它总会填满你的窗口。
心连心 马丁
你最好有相对固定窗口的大小一个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="*"/>
它会解决这个问题。
你也可以分享代码,我们可以看看它。
如果我的屏幕太小会发生什么?拉伸tabcontrol并将scrollviewer作为第一个孩子不是更好吗? – Silvermind 2012-03-22 08:43:48