Cambiar dinámicamente el estilo XAML en Code Behind para que los controles que aplican ese estilo también reflejen el cambio

Quiero poder establecer propiedades de estilo (y valores) desde el archivo .cs en mi ventana de WPF.

Mi problema es si tengo 30 rectángulos, todos los cuales quiero tener el mismo estilo (y no quiero actualizarlos todos individualmente). Me gustaría tenerlos todos configurados (en el archivo xaml) para el mismo estilo, y luego actualizar el estilo para que luzca como me gustaría

Di que establezco elStyle = "key1" en el Xaml para cada rectángulo. Luego quiero poder modificar "key1" más adelante para que todos los rectángulos reflejen ese cambio.

Lo intenté enApp.xaml

<code><Application.Resources>
    <Style x:Key="key1" TargetType="Rectangle">
        <Setter Property="Fill" Value="Red"/>
    </Style>
</Application.Resources>
</code>

En MainwWindows.xaml

<code><StackPanel>
    <Rectangle Style="{StaticResource key1}" Height="200" Width="200" x:Name="rect1"/>
    <Button Click="Button_Click" Content="Click"/>
</StackPanel>
</code>

En codigo detras

<code>private void Button_Click(object sender, RoutedEventArgs e)
{
    Style style = Application.Current.Resources["key1"] as Style;
    style.Setters.Add(new Setter(Rectangle.VisibilityProperty, Visibility.Collapsed));
}
</code>

Esto actualiza el estilo pero no actualiza los rectángulos.

es posible? ¿Alguien sabe como hacer esto? (Un ejemplo sería muy apreciado).

Respuestas a la pregunta(2)

Su respuesta a la pregunta