How can I define and use a variable in XAML to define a color?

Try defining your color as a SolidColorBrush:

<SolidColorBrush x:Key="ReadOnlyTextBrush" Color="#555555" />

...

<TextBox Foreground="{StaticResource ReadOnlyTextColor}" />

Sometimes you may need to define colors rather than brushes : (one case you would want this is to be able to define Gradients with color parameters) In that case you could just define them like this:

 <Color x:Key="ButtonColor1">Blue</Color>
 <Color x:Key="ButtonColor1">#AABBCC</Color>
 <Color x:Key="ButtonColor1" A="0" R="124" G="111" B="44"/>