9

TabControl を作成して、その外側のスペースに応じて自動サイズ変更しようとしています (StackPanel にあります):

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="100">
    <Grid>
        <StackPanel>
            <TabControl 
                BorderBrush="Red" 
                BorderThickness="2" 
                VerticalAlignment="Stretch" 
                VerticalContentAlignment="Stretch">

                <TabItem Header="Tab1"/>
                <TabItem Header="Tab2"/>
            </TabControl>
        </StackPanel>
    </Grid>
</Window>

上記のスニペットは次のウィンドウを生成しますが、赤い境界線がウィンドウの下部に届くようにします。

代替テキスト

4

2 に答える 2

22

問題はあなたStackPanelです。StackPanels は子を引き伸ばしません。

代わりに、 a を使用してDockPanelください: 最後の子は、残りのスペースを埋めるために引き伸ばされます ( LastChildFillを参照してください。デフォルトはtrueです)。

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="100">
    <Grid>
        <DockPanel>
            <TabControl BorderBrush="Red" BorderThickness="2">
                <TabItem Header="Tab1"/>
                <TabItem Header="Tab2"/>
            </TabControl>
        </DockPanel>
    </Grid>
</Window>

デフォルト値はすでにであるため、明示的に設定VerticalAlignmentする必要はありません。Stretch

関連リンク: MSDN のパネルの概要

于 2009-12-27T21:44:37.033 に答える
4

高さを親ウィンドウの実際の高さにバインドできます。

<TabControl 
    BorderBrush="Red" 
    BorderThickness="2"
    Height="{Binding Path=ActualHeight,
         RelativeSource={RelativeSource Mode=FindAncestor,
            AncestorType={x:Type Window}}}">
    <TabItem Header="Tab1"/>
    <TabItem Header="Tab2"/>
</TabControl>
于 2012-01-20T01:16:01.073 に答える