Динамическое изменение стиля XAML в Code Behind, чтобы элементы управления, применяющие этот стиль, также отражали изменение

Я хочу иметь возможность устанавливать свойства стиля (и значения )из файла.cs в моем окне WPF.

Моя проблема заключается в том, что у меня есть 30 прямоугольников, все из которых я хочу иметь одинаковый стиль (, и я не хочу обновлять их все по отдельности ). Я бы хотел, чтобы все они (в файле xaml )были настроены на один и тот же стиль, а затем обновили стиль, чтобы он выглядел так, как мне хотелось бы.

Скажем, я установил Style = "key1"в Xaml для каждого прямоугольника. Затем я хочу иметь возможность изменить «key1» позже, чтобы все прямоугольники отражали это изменение.

Я пробовал вApp.xaml

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

В MainwWindows.xaml

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

В коде позади

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));
}

Это обновляет стиль, но не обновляет прямоугольники.

Возможно ли это? Кто-нибудь знает как это сделать? (Буду очень признателен за пример ).

8
задан Nikhil Agrawal 30 June 2012 в 09:38
поделиться