Изменить цвет одной буквы в строке метки?

У меня есть проект в WPF 4 и VB.net - ... Мне нужно изменить цвет одной буквы в слове в метке (содержимое метки меняется совсем немного). Я действительно не уверен, что это возможно, но если это так, я был бы признателен за помощь в выяснении, как это сделать. Тай!

4 ответов


Label-это элемент управления содержимым, поэтому любой тип содержимого разрешен внутри метки.Вы можете легко сделать ваше требование чем-то вроде

<Label>
    <StackPanel Orientation="Horizontal">
        <TextBlock Foreground="Red" Text="T"/>
        <TextBlock Text="ext"/>
    </StackPanel>
</Label>

более чистым способом было бы использование flow-content-capabilites TextBlock:

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

Это ограничивает привязку немного, если это необходимо.


самый надежный способ я нашел до сих пор использует TextEffect:

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

этот цвет " s " красный. Конечно, вы можете привязать любое из вовлеченных свойств, если они должны быть динамическими.


Я только что реализовал что - то подобное в нашем проекте, это будет статично, хотя-я не уверен, что это то, что вам нужно. Вы можете изменять содержимое метки так часто, как вам нужно, но в конце она всегда будет иметь красный*. Я добавил стиль к проекту, как это

<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}" />