TextBlock
Более простой способ - использовать теги Span
в содержимом вашего TextBlock
, благодаря красоте XAML. Смотрите следующее:
<TextBlock Foreground="Red" FontSize="25">
I'M RED BY DEFAULT <Span Foreground="Blue">BUT NOW I'M BLUE!</Span>
</TextBlock>
![Span Tag result](https://i.stack.imgur.com/JttX5.png)
TextBox
Вы можете использовать конвертер для изменения цвета переднего плана содержимого TextBox, если определенное условие выполнено (т. Е. Введен символ '!'), Но это изменит цвет переднего плана всего содержимого, а не просто символа ' !
Не думаю, что это соответствует вашим требованиям, но я все равно опубликую некоторый код на тот случай, если он поможет вам на пути к решению.
конвертер.
public class CharColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
String ValueContent = String.Empty;
String ForegroundColor = "#000000";
String charValue = "!";
//check if value is null
if (value != null)
{
ValueContent = (String)value;
// Check for the char ! and change foreground colour
if (ValueContent.Contains(charValue)
{
ForegroundColor = "#e40034";
}
}
return ForegroundColor;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
1026 * XAML *
<TextBox Foreground="{Binding TextValue,Converter={StaticResource CharColorConverter}}" Text="{Binding TextValue}" />