根据子元素之一对齐堆栈面板

时间:2018-07-16 08:41:32

标签: wpf xaml

我有一个带有StackPanel的按钮,我想根据第一个TextBox(主文本)将StackPanel居中对齐。

<Button Style="{StaticResource NumPadStyle}" Grid.Column="0" Grid.Row="2" Tag="7" >
   <StackPanel Orientation="Horizontal">
        <TextBlock  Style="{StaticResource NumPadMainText}" Name="maintext">7</TextBlock>
        <TextBlock Style="{StaticResource NumPadSubText}" Name="subtext">PQRS</TextBlock>
   </StackPanel>
</Button>

当前: current

期望: desired

2 个答案:

答案 0 :(得分:0)

考虑到似乎所有按钮的大小相同,您可以使用带有偶数大小列的网格,以确保文本在所有按钮中的位置相同。

  <Button Style="{StaticResource NumPadStyle}" Grid.Column="0" Grid.Row="2" Tag="7">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="1"
                       Style="{StaticResource NumPadMainText}" Name="maintext">7</TextBlock>
            <TextBlock Grid.Column="2" HorizontalAlignment="Left"
                       Style="{StaticResource NumPadSubText}" 
                       Name="subtext">PQRS</TextBlock>
        </Grid>
   </Button>

LE:如果希望所有NumPadSubTexts从所有按钮中的相同位置开始,则可以将“列”中的Width="Auto"值替换为固定值,例如Width="20"

答案 1 :(得分:0)

MinWidth (与字体大小一致地进行调整)设置为StackPanel:

<StackPanel Orientation="Horizontal" MinWidth="35">
     <TextBlock  Style="{StaticResource NumPadMainText}" Name="maintext">7</TextBlock>
     <TextBlock Style="{StaticResource NumPadSubText}" Name="subtext">PQRS</TextBlock>
</StackPanel>