TabControl.VerticalAlignment = Stretch non fa nulla
-
21-09-2019 - |
Domanda
Sto cercando di fare un TabControl al ridimensionamento automatico in base al suo spazio esterno (è in uno 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>
Il frammento precedente produce il seguente finestra, mentre io voglio il bordo rosso per raggiungere il fondo della finestra:
Soluzione
Il problema è il tuo StackPanel
. StackPanels non allungare i loro figli.
Al contrario, utilizzare un DockPanel
: L'ultima bambino sarà allungato per riempire lo spazio rimanente (vedi LastChildFill , che per default è 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>
impostando esplicitamente VerticalAlignment
non è necessaria, dal momento che suo default valore è già Stretch
.
collegamento: Pannelli Panoramica su MSDN
Altri suggerimenti
È possibile associare l'altezza effettiva altezza della finestra padre.
<TabControl
BorderBrush="Red"
BorderThickness="2"
Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}}}">
<TabItem Header="Tab1"/>
<TabItem Header="Tab2"/>
</TabControl>