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