【问题标题】:WPF TextBlock UnderlineWPF 文本块下划线
【发布时间】:2011-08-01 21:39:41
【问题描述】:

我有一个textblockwidth500,但我的字符串只是说“H”但我想underline 整个textblock 宽度不只是在H 下我该怎么办?

【问题讨论】:

标签: c# visual-studio windows-phone textblock underline


【解决方案1】:
        <TextBlock VerticalAlignment="Bottom" 
                   HorizontalAlignment="Center" 
                   Margin="40" 
                   Height="40" 
                   FontSize="16" 
                   Tapped="TextBlock_Tapped"
                   Text="Text"
                   Foreground="{StaticResource LightBlue}">
            <Underline>
                <Run Text="Text"/>
            </Underline>
        </TextBlock>

【讨论】:

  • 伙计,太棒了!
  • @IlkerBaltaci 我的赞成票。此解决方案更加灵活,因为它使您可以控制要下划线的文本数量。您可以使用&lt;Run&gt; 标记分隔文本,然后使用 仅围绕您想要下划线的文本部分。 示例&lt;Run Text="This is a "/&gt; &lt;Underline&gt;&lt;Run Text="good "/&gt;&lt;/Underline&gt; &lt;Run Text="solution."/&gt;这个解决方案对我的要求帮助很大。
【解决方案2】:

只要加上我的2美分,就可以通过这段代码在运行时达到和Talia的回答一样的效果:

YourTextBlock.TextDecorations = System.Windows.TextDecorations.Underline;

由于某种原因,VS2010 没有显示 RHS 的 Intellisense,但它可以正确编译和运行。

【讨论】:

  • 绝妙的提示。我永远不会偶然发现尝试这样做。
  • 我认为这是因为 TextDecorations 是一个集合。您可以使用 TextDecorations.Add 和 Clear 方法
【解决方案3】:

您最好的选择可能是使用位于文本块正下方的矩形,其宽度始终是文本块的宽度。像这样:

<DockPanel LastChildFill="False">
    <TextBlock DockPanel.Dock="Top" x:Name="blockToUnderline" Text="H" Width="76" />
    <Rectangle DockPanel.Dock="Top" Fill="Black" Height=1 Width="{Binding ElementName=blockToUnderline, Path=ActualWidth}" />
</DockPanel>

【讨论】:

    【解决方案4】:

    您应该使用 TextBlock 的属性“TextDecorations”。像这样:

     <TextBlock Text="H" TextDecorations="Underline"/>
    

    【讨论】:

    • 这将为文本添加下划线,但下划线不会跨越 TextBlock 的整个宽度。
    • 如果它没有回答问题,这并不是最简单的。
    • 就实用性而言,这是大多数人在谷歌“wpf textblock underline”并获得此 QA 作为第一个结果时正在寻找的答案。如果投票数是任何指标,我和其他许多人就是这种情况。
    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2013-08-22
    • 2021-02-09
    • 2014-10-14
    • 2014-03-22
    • 2011-03-19
    • 2018-02-11
    相关资源
    最近更新 更多