StackPanel 内で TextBox を垂直方向に配置するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1918847

  •  20-09-2019
  •  | 
  •  

質問

次の 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>
役に立ちましたか?

解決

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

したがって、スタックパネルの垂直配置を「中心」に設定してスタックパネルがドックパネルの中心に来るようにするか、スタックパネルを完全に削除して TextBlock に垂直配置 =「中心」を設定します。

他のヒント

どうやら私は 10ヶ月前にこの質問をしました, を置き換えることで、上記のシナリオが機能するようになりました。 スタックパネルDockPanel LastChildFill=True このような:

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

私は完璧に動作するように思われるこの出くわします:

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

グリッドは、その中に単一のTextBoxは、グリッド内の孤立セルを充填し、TextBlock内VerticalAlignmentを、テキストをより内の中心にされることを確実にすることを確実にする。

単に位置/あなたが必要が水平にテキストを揃える(上記のスニペットはまた、この軸でそれを中心ますが、これを変更する垂直センタリングを変更しません)。

のTextBlockを取り囲んStackPanelの内側には、VerticalContentAlignmentをチェックしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top