Вопрос

Я пытаюсь заставить 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>

Приведенный выше фрагмент создает следующее окно, хотя я хочу, чтобы красная рамка доходила до нижней части окна:

alt text

Это было полезно?

Решение

Проблема в твоем StackPanel.StackPanels не будет растягивать своих дочерних элементов.

Вместо этого используйте DockPanel:Последний дочерний элемент будет растянут, чтобы заполнить оставшееся пространство (см. ПоследнийРебенокЗаполнить, который по умолчанию равен 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

Другие советы

Вы можете привязать высоту к фактической высоте родительского окна.

<TabControl 
    BorderBrush="Red" 
    BorderThickness="2"
    Height="{Binding Path=ActualHeight,
         RelativeSource={RelativeSource Mode=FindAncestor,
            AncestorType={x:Type Window}}}">
    <TabItem Header="Tab1"/>
    <TabItem Header="Tab2"/>
</TabControl>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top