2010-11-09 73 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)。