When you do this, you’ll notice that the color in all of the controls changes as soon as this code executes.

All of the controls update immediately because SolidColorBrush derives from Freezable, which supports the Changed event. The Changed event fires when the color changes and the controls handle that event and redraw themselves.

All of the brushes in the predefined Brushes collection are already in a frozen state, meaning that they are read-only. Being frozen means that they will perform more efficiently when using them to render graphical objects, since WPF doesn’t need to worry about notifying consumers of the brush when the brush changes.

Here’s an example, where we have two different labels, one painted with a brush created in XAML and one painted with a brush from the Brushes collection.

The idea of an object deriving from Freezable is that it normally is in a read/write state, but can be explicitly put into a read-only state using the Freeze method. A frozen object can be used more efficiently in WPF because it doesn’t need to notify consumers of the object that its value has changed.