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