Alterar o estilo XAML dinamicamente no Code Behind para que os controles que aplicam esse estilo também reflitam a alteração

Eu quero ser capaz de definir propriedades de estilo (e valores) do arquivo. Cs na minha janela do WPF.

Meu problema é se eu tenho 30 retângulos, todos os quais eu quero ter o mesmo estilo (e eu não quero atualizar todos eles individualmente). Eu gostaria de tê-los todos definidos (no arquivo xaml) para o mesmo estilo e, em seguida, atualizar o estilo para olhar da maneira que eu gostaria.

Digamos que eu configure oStyle = "key1" no Xaml para cada retângulo. Então, quero poder modificar "key1" mais tarde, para que todos os retângulos reflitam essa alteração.

Eu tenteiApp.xaml

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

No MainwWindows.xaml

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

No código atrás

<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>

Isso atualiza o estilo, mas não atualiza os retângulos.

Isso é possível? Alguém sabe como fazer isso? (Um exemplo seria muito apreciado).

questionAnswers(2)

yourAnswerToTheQuestion