窗口大小和带有DataBinding的TabControl(项目大​​小)

时间:2010-11-09 08:41:23

标签: wpf

以下情况困扰我: 我有一个简单的WPF窗口,它有一个TabControl作为内容。 TabControl的ItemsSource绑定到对象列表。为了可视化对象,我定义了一些DataTemplates。由于对象列表可能具有不同的类型,因此默认模板选择器会选择正确的可视化。这样可以正常工作,不会造成任何麻烦。

出现的问题是窗口的大小。 DataTemplates具有不同的大小。我希望对话框具有最大DataTemplate适合的大小。当我在窗口中使用SizeToContent时,每次更改选项卡时,窗口都会更改其大小。

所以,我的问题是,如何让窗口适合最大的TabItem(大小由DataTemplate决定)?

感谢, 弗洛里安

1 个答案:

答案 0 :(得分:4)

您遇到的问题是,由于未显示较大的DataTemplate,因此在调整内容时不会考虑其大小。

您的选择:
1)在适当的控件(tabcontrol,Window,DataTemplate等)上手动设置(最小)宽度/高度 2)如果你知道某个标签总是比其余标签大,你可以将其他标签的宽度/高度绑定到更大的标签:

<TabItem>
    <StackPanel Name="stackPanelBiggest" />
</TabItem>
<TabItem>
    <StackPanel Width="{Binding ElementName=stackPanelBiggest, Path=ActualWidth}" />
</TabItem>

我认为,对于上述工作,最大的标签必须首先显示。虽然选项卡控件在切换到另一个选项卡时会破坏前一个选项卡的可视树,但此方法仍适用于我(尽管在切换选项卡后,ActualWidth应为0或NaN)。