Frage

In der folgenden XAML, das Wort "Test" Zentren horizontal , aber nicht vertikal.

Wie kann ich es zum Zentrum bekommen vertikal?

<Window x:Class="TestVerticalAlign2343.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStartupLocation="CenterScreen"
    Title="Window1" Height="768" Width="1024">
    <DockPanel LastChildFill="True">
        <Slider x:Name="TheSlider"
                DockPanel.Dock="Left"
                Orientation="Vertical"
                HorizontalAlignment="Center"
                HorizontalContentAlignment="Center"
                Minimum="0"
                Maximum="10"
                Cursor="Hand"
                Value="{Binding CurrentSliderValue}"
                IsDirectionReversed="True"
                IsSnapToTickEnabled="True"
                Margin="10 10 0 10"/>
        <Border DockPanel.Dock="Right" Background="Beige"
                Padding="10"
                Margin="10"
                CornerRadius="5">
            <StackPanel Height="700">
                <TextBlock
                    Text="Test"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
                    FontSize="200" x:Name="TheNumber"/>

            </StackPanel>
        </Border>
    </DockPanel>
</Window>
War es hilfreich?

Lösung

Ein Stackpanel, egal wie man es strecken, wird die Kinder kollabieren um. Sie können nicht machen es wachsen mehr als das. Im Grunde genommen, dass "Height = 700" ist nicht zu helfen.

Also entweder gesetzt Vertical auf dem Stackpanel „center“, so dass der Stackpanel in die Mitte des DockPanel geht ... oder entfernen Sie den Stackpanel zusammen und setzte Vertical = „Center“ auf dem Textblock.

Andere Tipps

Es scheint, ich diese Frage gestellt vor 10 Monaten , bekam ich das oben beschriebene Szenario Arbeit durch den Austausch der Stackpanel mit DockPanel LastChildFill = True wie folgt aus:

<DockPanel LastChildFill="True">
    <TextBlock
        DockPanel.Dock="Top"
        Text="Test"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        FontSize="200" x:Name="TheNumber"/>
</DockPanel>

ich über diese gestolpert, die perfekt zu funktionieren scheint:

<Grid>
    <TextBlock Text="My Centered Text"
               TextAlignment="Center" 
               VerticalAlignment="Center"/>
</Grid>

Die Grid stellt sicher, dass die einzelne TextBox in sich die Einzelzelle im Gitter füllen und die Vertical in dem Textblock stellt sicher, dass der Text innerhalb als zentriert ist.

Einfach Position / align Ihren Text horizontal jedoch erforderlich, dass Sie (die oben genannten Schnipsel Zentren es in dieser Achse auch, aber das ändert nicht ändert die vertikale Zentrierung).

Im Inneren des Stackpanel, die den Textblock umgibt Besuche Vertical.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top