Cambiar los colores de las subcadenas dentro del texto enlazado de un TextBlock
Estoy vinculando alguna propiedad a miTextBlock
:
<TextBlock
Text="{Binding Status}"
Foreground="{Binding RealTimeStatus,Converter={my:RealTimeStatusToColorConverter}}"
/>
Status
es texto simple yRealTimeStatus
esenum
. Para cadaenum
valor estoy cambiando miTextBlock
Foreground
color.
A veces miStatus
El mensaje contiene números. Ese mensaje obtiene el color apropiado de acuerdo con elenum
valor, pero me pregunto si puedo cambiar los colores de los números dentro de este mensaje, por lo que los números obtendrán un color diferente del resto del texto.
Editar.
XAML
<TextBlock my:TextBlockExt.XAMLText="{Binding Status, Converter={my:RealTimeStatusToColorConverter}}"/>
Convertidor:
public class RealTimeStatusToColorConverter : MarkupExtension, IValueConverter
{
// One way converter from enum RealTimeStatus to color.
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is RealTimeStatus && targetType == typeof(Brush))
{
switch ((RealTimeStatus)value)
{
case RealTimeStatus.Cancel:
case RealTimeStatus.Stopped:
return Brushes.Red;
case RealTimeStatus.Done:
return Brushes.White;
case RealTimeStatus.PacketDelay:
return Brushes.Salmon;
default:
break;
}
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public RealTimeStatusToColorConverter()
{
}
// MarkupExtension implementation
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}