2010-11-09 37 views
4

以下方案困扰我: 我有一个简单的WPF窗口,其中有一个TabControl作为内容。 TabControl的ItemsSource被绑定到一个对象列表。为了可视化我定义的一些DataTemplates对象。由于对象列表可能具有不同的类型,因此默认模板选择器会选择正确的可视化对象。这工作正常,不会造成任何麻烦。窗口大小和TabControl与DataBinding(项目的大小)

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

所以,我的问题是,我怎样才能使窗口适合最大的TabItem(哪个大小由DataTemplate决定)?

感谢, 弗洛里安

回答

4

您遇到的问题,是因为没有显示较大的DataTemplate,它的大小,以内容时尺寸不考虑。

您的选择:
1)手动设置(分钟)宽/适当的控件(TabControl的,窗口,DataTemplate中,等)
2)如果你知道某个标签总是会比更大的高度休息,您可以在其他选项卡的宽度/高度绑定到更大的标签:

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

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