2012-03-22 68 views
2

我有一個WPF TabControl,包含兩個不同寬度和高度的TabItems。奇怪的是,當我在項目之間切換時,TabControl的大小被調整爲緊密匹配選定的選項卡項目。例如,如果我點擊較小的TabITem,TabControl會變小,如果我選擇較大的一個,它會變得更大。TabControl總是調整大小到選定的選項卡項目?

我想這會看起來但從用戶的角度傻了,這不正常標籤GUI的情況下,如Windows性能。是否可以設置寬度和高度以適合最大的項目?我想嘗試避免設定一個恆定值

+0

如果我的屏幕太小會發生什麼?拉伸tabcontrol並將scrollviewer作爲第一個孩子不是更好嗎? – Silvermind 2012-03-22 08:43:48

回答

0

好吧,如果你不希望有一個固定的大小,我看到另一個選項,但這個不便宜在性能方面。 你需要知道的是第二個標籤需要的acutal寬度和高度。這意味着您可以將TabControl的高度和寬度綁定到較大項目的DesiredSize以及一些額外的空間。 但作爲第二個項目可能不會已經測量(檢查IsMeasureValid屬性),那麼你需要調用UpdateLayout請其做爲控制整個布點。

但總的來說,我真的不會推薦你去那條路,因爲玩佈局通常是痛苦的....。 我知道這不是你要求的,而是來自經驗 - >不要這樣做。

爲什麼真的不給出一個固定的大小,並添加scrollviewers?或者我們是一個dockpanel並將所有的東西都放置在某個地方,然後給tabcontrol留下剩餘的空間,這樣它總會填滿你的窗口。

心連心 馬丁

3

你最好有相對固定窗口的大小一個TabControl的大小,讓根據TabControl的大小調整大小的TabItems。

編輯:

確保包含TabControl的行或列不是自動大小。如果您的代碼如下所示,您的TabControl將根據活動的TabItem調整大小。

 <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height=".20*"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height=".20*"/> 
     </Grid.RowDefinitions> 
     <TabControl Grid.Row="1" BorderBrush="Red" BorderThickness="1"> 
      <TabItem Header="Blue"> 
       <Rectangle Width="200" Height="200" Fill="Blue"></Rectangle> 
      </TabItem> 
      <TabItem Header="Black"> 
       <Rectangle Width="100" Height="100" Fill="Black"></Rectangle> 
      </TabItem> 
     </TabControl> 
    </Grid> 

如果你在上面的代碼更改行<RowDefinition Height="Auto"/><RowDefinition Height="*"/>它會解決這個問題。

你也可以分享代碼,我們可以看看它。

相關問題