更改标签字符串中单个字母的颜色?

时间:2011-05-21 20:55:54

标签: wpf vb.net colors label

我在WPF 4和VB.net中有一个项目。我需要在标签中的单词中更改单个字母的颜色(标签的内容会发生相当大的变化)。我真的不确定这是否可能,但如果是的话,我会很感激帮助找出方法。 TY!

4 个答案:

答案 0 :(得分:13)

标签是一种内容控件,因此标签内允许任何类型的内容。您可以通过

之类的内容轻松完成您的要求
<Label>
    <StackPanel Orientation="Horizontal">
        <TextBlock Foreground="Red" Text="T"/>
        <TextBlock Text="ext"/>
    </StackPanel>
</Label>

答案 1 :(得分:13)

更简洁的方法是使用TextBlock的流内容功能:

<Label>
    <TextBlock>
        <Run Text="L" Foreground="Green"/>
        <Run Text="orem Ipsum"/>
    </TextBlock>
</Label>

如果需要,这会限制绑定。

答案 2 :(得分:8)

到目前为止我发现的最干净的方法是使用TextEffect

<Label>
    <TextBlock Text="Search">
        <TextBlock.TextEffects>
            <TextEffect PositionStart="0" PositionCount="1" Foreground="Red"/>
        </TextBlock.TextEffects>
    </TextBlock>
</Label>

这会使“S”红色。如果需要动态,您当然可以绑定任何相关属性。

答案 3 :(得分:2)

我刚刚在我们的项目中实现了类似的东西,但这将是静态的 - 我不确定这是否是你需要的。您可以根据需要随时更改标签的内容,但最后总是会有红色*。我为这个项目添加了一个样式

<Style x:Key="RequiredFieldLabel"
       TargetType="{x:Type Label}">
  <Setter Property="ContentTemplate">
    <Setter.Value>
      <DataTemplate>
        <StackPanel Orientation="Horizontal">
          <TextBlock Text="{Binding}" />
          <TextBlock Text="*"
                   Foreground="red" />
        </StackPanel>
      </DataTemplate>
    </Setter.Value>
  </Setter>
</Style>

然后,您可以在项目的任何位置的标签上使用此样式。

<Label Content="Enter Name:"
       Style="{StaticResource RequiredFieldLabel}" />