If you look at the source code, you will find it
public sealed class SolidColorBrush : Brush { public Color Color { ... } ... } [TypeConverter(typeof (ColorConverter))] public struct Color : IFormattable, IEquatable<Color> { ... }
The conversion is done using the ColorConverter.
And
[TypeConverter(typeof (BrushConverter))] public abstract class Brush : Animatable, IFormattable, DUCE.IResource { ... } public class TextBlock : ... { public Brush Foreground { ... } }
If the conversion is done using BrushConverter.
There is no “implicit” conversion that you can register. All this is done by applying TypeConverter attributes with the type of the corresponding value converter to the corresponding properties or classes.
In your example you need to use
<Window.Resources> <SolidColorBrush x:Key="ForegroundFontColor" Color="Blue"/> </Window.Resources> <TextBlock Foreground={StaticResource ForegroundFontColor}>Hello</TextBlock>
source share