TabControl取其中一个项目的大小

时间:2012-04-12 00:30:49

标签: wpf layout wpf-controls tabcontrol

我有一个TabControl,它有四个标签:

<TabControl> 
    <TabItem><TextBox/></TabItem>
    <TabItem><UserControl/></TabItem>
    <TabItem><Label/></TabItem>
    <TabItem><Image/></TabItem>
</TabControl> 

每个项目都是标准的WPF控件,但第二个是自定义的UserControl,可以有任意大小。

Textbox绑定到某些属性,但可以为空或可以包含长文本。与Label相同。

而Image总是最大的。

TabControl在Window中定义,根据选项卡的大小改变大小。

目前行为是这样的,每当我从一个标签切换到下面的标签时,窗口就会改变大小。

我很困惑哪个是获得以下内容的最佳方式:

  • TabControl根据UserControl大小设置其大小
  • TextBox将适合TabItem面板,但如果所需的尺寸大于第二个面板的尺寸,那么它将显示垂直滚动条
  • 加载表单并显示选项卡后,从一个选项卡更改为下一个选项卡将不会调整窗口大小。

关于如何在不必编写自定义控件的情况下实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

您应该能够使用一些ElementName绑定和ScrollViewer来实现这一点:

<TabControl Name="tabControl" Height="{Binding ElementName=userControl, Path=Height}">
    <TabItem Header="ONE">
        <ScrollViewer Height="{Binding ElementName=tabControl,Path=Height}">
            <TextBox Height="400" VerticalAlignment="Top"/>
        </ScrollViewer>
     </TabItem>
     <TabItem Header="TWO"><UserControl Name="userControl" Height="200" Width="400" /></TabItem>
     <TabItem Header="THREE"><Label/></TabItem>
     <TabItem Header="FOUR"><Image/></TabItem>
</TabControl>