【问题标题】:WPF: Align TextBlock with different font sizes at topWPF:将 TextBlock 与顶部的不同字体大小对齐
【发布时间】:2018-12-13 00:59:03
【问题描述】:

我需要在顶行对齐两个不同字体大小的文本元素。 到目前为止,我所管理的就是:

由此代码产生:

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

或者:

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

我还尝试了更多的东西,我不会在代码中重复。我尝试将“运行”用作两个文本元素的单个 TextBlock 的子元素,并且我(实际上已开始)尝试不使用包含其他两个元素的 TextBlock。

所以我尝试了很多,我搜索了很多 - 我仍然不是我想去的地方。

任何提示将不胜感激!

谢谢, 马库斯

【问题讨论】:

    标签: c# wpf textblock


    【解决方案1】:

    尝试以下方法:

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

    【讨论】:

    • 完美!你让我开心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 2019-08-03
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多