2

我有一个 TabControl 有四个选项卡:

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

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

文本框绑定到某个属性,但可以为空或可以有很长的文本。与标签相同。

相反,图像始终具有最大的尺寸。

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

目前的行为是,每次我从一个选项卡切换到下一个选项卡时,窗口都会改变大小。

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

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

关于如何在无需编写自定义控件的情况下实现这一点的任何想法?

4

1 回答 1

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>
于 2012-04-12T02:09:08.937 回答