2012-03-22 12 views
2

私は、幅と高さが異なる2つのTabItemを含むWPF TabControlを持っています。奇妙なことは、項目を切り替えると、TabControlのサイズが選択されたタブ項目に近づくようにサイズが変更されることです。たとえば、小さいTabITemをクリックすると、TabControlが小さくなり、大きなものを選択すると大きくなります。TabControlは常に選択したタブ項目のサイズを変更しますか?

これはユーザーの観点からはばかげていると思いますが、これはWindowsのプロパティなどの通常のタブのGUIでは当てはまりません。最大のアイテムに合わせて幅と高さを設定することは可能ですか?私は一定の値を設定することを避けるために試してみたいです

+0

画面が小さすぎるとどうなりますか?タブコントロールを伸ばし、最初の子としてスクロールビューアを置く方が良いのではないでしょうか? – Silvermind

答えて

0

固定サイズを望んでいない場合、別のオプションがありますが、これはパフォーマンス面で安価ではありません。 あなたが知る必要があるのは、2番目のタブに必要な幅と高さです。つまり、TabControlの高さと幅を大きい項目のDesiredSizeに追加のスペースを加えてバインドすることができます。 しかし、2番目の項目がまだ測定されていない(IsMeasureValidプロパティをチェックする)ので、コントロールのレイアウト全体を行うUpdateLayoutを呼び出す必要があります。

しかし、一般的に私は本当にあなたがその経路に行くことをお勧めしません。レイアウトで遊ぶのは、通常、痛みです。 私はそれがあなたが求めているのではなく、経験から - それをしないことを知っています。

なぜ、固定サイズを指定せずにスクロールビューワを追加するのですか?または、ドックパネルとドックをどこかにドッキングし、タブコントロールに残りのスペースを与えて、常にウィンドウをいっぱいにします。あなたがより良いウィンドウのサイズに対して固定TabControlのサイズを持っているとTabItemsはTabControlのの大きさに応じてサイズを変更させてください

HTH マーティン

3

EDIT:

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="*"/>に上記のコードの行<RowDefinition Height="Auto"/>を変更した場合、それは問題を解決します。

コードを共有することもできます。私たちはそれを見ることができます。

関連する問題