【问题标题】:Multiple Colors In TextBlockTextBlock 中的多种颜色
【发布时间】:2012-01-12 00:40:00
【问题描述】:

是否可以将动态颜色添加到 TextBlock ..i.e.一个字符用一种颜色,下一个用另一种颜色。

<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" >
  // Can we add something here to specify what colours for what chars
</TextBlock>

基本上我从 no 输入一个动态的 4 个字符序列。我已将它绑定到 ListBox 内的这个 TextBlock。是否可以有不同颜色的字符。

如果是这样,是否可以动态添加这些颜色,例如。如果我点击一个按钮,某些字符会改变颜色?

谢谢。任何帮助表示赞赏。

【问题讨论】:

    标签: xaml windows-phone-7 textblock text-coloring


    【解决方案1】:

    实际上,您可以,当您在数据绑定的 Textblock 或许多其他地方执行 StringFormat 时,它会派上用场。

    如果您确实想尝试一下,比如这里有一个表单标签的 SL 示例,它在文本必填字段旁边放置了一个红色星号,但随后也可以向其中添加更多内容,如示例中所示。应该适用于 Silverlight、WPF、UWP 等...

    <TextBlock>
          <Run Text="*" Foreground="#FFE10101"/><Run Text="Required Line" />
          <Run Text="Red" Foreground="Red"/>
          <Run Text="Blue" Foreground="Blue"/>
          <Run Text="{Binding SomeString, StringFormat='Hell ya you can make \{0\} a different color!'}" Foreground="Orange"/>
    </TextBlock>
    

    【讨论】:

      【解决方案2】:

      我正在使用 WP7 SDK 为 Mango 进行开发。您可以使用 。在 WP7 上似乎有点问题,您必须在 Run.Text 属性上添加一个空格才能使间距正确:

      <TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>;
      

      【讨论】:

      • 如何动态设置此 Run 标签中的文字?
      【解决方案3】:

      为文本块动态设置前景色

      使用:txtblockname.Foreground= new SolidColorBrush(Colors.Yellow);

      【讨论】:

        【解决方案4】:

        TextBlock 不支持多种前景色。

        您可以通过使用多个文本块(每个字母一个)并将它们放置在包装面板中来重新创建此行为。然后,您可以根据需要更改单个字符/字母的颜色。
        请注意这可能产生的性能影响。不过,需要调整单个字母周围的边距以重新创建标准行为。特别注意标点符号。

        【讨论】:

        • 所以,有两件事。 1. 是的,它与 XAML 中的 一起使用,或者 2. 使用 c# 创建一个新的运行实例并使用 textblock.Inlines 的 .add 方法添加此实例。我了解您的评论来自 2011 年,但可能会对其进行编辑或删除,以免 10 年后产生误导。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多