WPF: выровнять TextBlock с разными размерами шрифта сверху - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно выровнять два текстовых элемента разных размеров шрифта в верхней строке.Все, что мне удалось до сих пор, это либо: enter image description here

Исходя из этого кода:

                <Canvas VerticalAlignment="Center" HorizontalAlignment="Center" SnapsToDevicePixels="True">
                <StackPanel x:Name="RemainingTimeDisplay" Orientation="Horizontal" VerticalAlignment="Top">
                    <StackPanel.Margin>
                        <MultiBinding Converter="{StaticResource CenterConverter}">
                            <Binding ElementName="RemainingTimeDisplay" Path="ActualWidth"/>
                            <Binding ElementName="RemainingTimeDisplay" Path="ActualHeight"/>
                        </MultiBinding>
                    </StackPanel.Margin>
                    <!--<Run FontSize="360" Text="{Binding RemainingTime.Minutes, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>
                        <Run FontSize="128" Text="{Binding RemainingTime.Seconds, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>-->
                    <TextBlock FontSize="360" Text="{Binding RemainingTime.Minutes, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>
                    <TextBlock FontSize="128" Text="{Binding RemainingTime.Seconds, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>
                </StackPanel>
            </Canvas>

Или: enter image description here

<Canvas VerticalAlignment="Center" HorizontalAlignment="Center" SnapsToDevicePixels="True">
  <StackPanel x:Name="RemainingTimeDisplay" Orientation="Horizontal" VerticalAlignment="Top">
    <StackPanel.Margin>
        <MultiBinding Converter="{StaticResource CenterConverter}">
            <Binding ElementName="RemainingTimeDisplay" Path="ActualWidth"/>
            <Binding ElementName="RemainingTimeDisplay" Path="ActualHeight"/>
        </MultiBinding>
    </StackPanel.Margin>
    <TextBlock FontFamily="Roboto" VerticalAlignment="Top">
      <TextBlock FontSize="360" Text="{Binding RemainingTime.Minutes, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>
      <TextBlock FontSize="128" Text="{Binding RemainingTime.Seconds, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, StringFormat=D2, Converter={StaticResource IntAbsConverter}}"/>
     </TextBlock>
  </StackPanel>
</Canvas>

Я попробовал еще кое-что, что я не повторяю здесь в коде.Я пытался использовать «run» как дочерний элемент для одного TextBlock для обоих текстовых элементов, и я (фактически начал) пытался без TextBlock, который включает в себя два других.

Итак, я много пробовал, много гуглил -и я все еще не там, где хочу быть.

Любой намек был бы очень признателен!

Спасибо, Маркус

1 Ответ

0 голосов
/ 12 декабря 2018

Попробуйте следующее:

<TextBlock FontSize="360"
            Text="00"
            LineHeight="360"
            LineStackingStrategy="BlockLineHeight" />
<TextBlock FontSize="128"
            LineHeight="360"
            LineStackingStrategy="BlockLineHeight">
    <Run Text="00" BaselineAlignment="Top" />
</TextBlock>
...