12

次の XAML では、"Test" という単語が水平方向に中央揃えされていますが、垂直方向には中央揃えされていません。

どうすれば垂直方向に中央に配置できますか?

<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>
4

4 に答える 4

18

スタックパネルは、どのように伸ばしても、子の周りで折りたたまれます。それ以上成長させることはできません。基本的に、「Height=700」は役に立ちません。

したがって、StackPanel の VerticalAlignment を「center」に設定して、stackpanel がドックパネルの中央に配置されるようにするか、stackpanel を完全に削除して、TextBlock に VerticalAlignment="Center" を設定します。

于 2009-12-17T01:45:55.463 に答える
11

10 か月前にこの質問をしたようですが、次のようにStackPanelDockPanel LastChildFill=Trueに置き換えることで、上記のシナリオが機能するようになりました。

<DockPanel LastChildFill="True">
    <TextBlock
        DockPanel.Dock="Top"
        Text="Test"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        FontSize="200" x:Name="TheNumber"/>
</DockPanel>
于 2009-12-17T01:18:09.953 に答える
5

私はこれに出くわしましたが、これは完全に機能しているようです:

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

Grid は、その中の単一の TextBox がグリッド内の孤立したセルを埋めることを保証し、TextBlock の VerticalAlignment はテキストが中央に配置されることを保証します。

必要に応じて、テキストを水平方向に配置/整列するだけです (上記のスニペットでは、この軸の中央にも配置されますが、これを変更しても垂直方向の中央揃えは変更されません)。

于 2014-08-27T06:47:07.593 に答える
-3

TextBlock を囲む StackPanel 内で、VerticalContentAlignment を調べます。

于 2009-12-17T01:05:39.103 に答える