Style Setter Cepillo de congelación

Parece que me he encontrado con algún comportamiento con respecto a los diccionarios, pinceles y estilos de recursos de WPF (al menos eso es lo que he notado hasta ahora) que va en contra de mi comprensión de cómo deberían funcionar estas cosas. Básicamente, si hago referencia a un Pincel de un Organizador dentro de un Estilo en un ResourceDictionary, hace que el Pincel se congele. El siguiente ejemplo ilustra esto, ya que obtengo una InvalidOperationException cuando intento cambiar el Color en el Pincel compartido dentro del controlador de eventos Click de mi botón. Debería hacer que cambie el color de ambos Rectángulos, ya que ambos usan el mismo Pincel compartido, pero en su lugar obtengo la excepción.

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <SolidColorBrush x:Key="TestBrush" Color="Red" />
        <Style TargetType="Rectangle">
            <Setter Property="Fill" Value="{StaticResource TestBrush}" />
        </Style>
    </Window.Resources>
    <StackPanel>
        <Button Name="Button1" Content="Change Color" Click="Button1_Click" />
        <Rectangle Height="20" />
        <Rectangle Height="20" />
    </StackPanel>
</Window>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button1_Click(object sender, RoutedEventArgs e)
    {
        var brush = (SolidColorBrush)FindResource("TestBrush");
        // InvalidOperationException Here.  Brush is Frozen/Read-Only
        brush.Color = Colors.Blue;
    }
}

Si simplemente elimino el Estilo (más específicamente el Setter) y hago referencia al Pincel (aún desde ResourceDictionary) directamente desde cada Rectángulo, obtengo el comportamiento esperado de los colores de los Rectángulos cambiando en tándem desde el evento de clic del botón. Vea el código a continuación (el controlador de eventos de clic de botón sigue siendo el mismo).

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <SolidColorBrush x:Key="TestBrush" Color="Red" />
    </Window.Resources>
    <StackPanel>
        <Button Name="Button1" Content="Change Color" Click="Button1_Click" />
        <Rectangle Height="20" Fill="{StaticResource TestBrush}" />
        <Rectangle Height="20" Fill="{StaticResource TestBrush}" />
    </StackPanel>
</Window>

Solo veo que el Pincel se congela cuando se hace referencia como un StaticResource del Setter de un Estilo. Puedo hacer referencia al mismo Brush desde otras ubicaciones dentro de ResourceDictionary sin que se congele; es decir, el contenido de ControlTemplates.

¿Alguien puede explicar qué está pasando con este comportamiento extraño y si es por diseño o un error?

Gracias, Brandon

Respuestas a la pregunta(2)

Su respuesta a la pregunta