Как мне изменить весь стиль кнопки из кода в реальном времени? - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть кнопка, которая мигает.

Я бы хотел изменить весь стиль кнопок из словаря ресурсов, когда он мигает.

Я думаю, это будет так:

DesktopWindow.AlertButton.Style = (Style)DesktopWindow.Resources["GreenAlertButtonStyle"];

Но это не работает. Как мне это сделать? Я не могу просто изменить цвет фона (хотя это все, что я действительно хочу сделать), потому что я хочу сохранить триггеры. Когда я изменяю фон кнопки прямо сейчас, триггеры наведения мыши перестают работать ....

Кнопка:

    <Style TargetType="Button" x:Key="BaseAlertButtonStyle">
    <Setter Property="ToolTip" Value="Show Alert List"/>
    <Setter Property="Effect" Value="{DynamicResource dropShadow}" />
    <Setter Property="Background" Value="{DynamicResource AlertButtonBackground}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid HorizontalAlignment="Stretch"
                        VerticalAlignment="Stretch">
                    <Border CornerRadius="5" x:Name="ButtonBorder" Margin="0,0,0,0"
                            VerticalAlignment="Stretch" BorderThickness="0"
                            BorderBrush="#ffffff" Padding="0"
                            Background="{TemplateBinding Background}"
                            HorizontalAlignment="Stretch">
                        <Image x:Name="alertImage">
                            <Image.Source>
                                <BitmapImage UriSource="/resources/alertIcon.png" />
                            </Image.Source>
                        </Image>
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="{DynamicResource ButtonRolloverBackground}"/>
                    </Trigger>
                </ControlTemplate.Triggers>                    
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Я не хочу слышать о поиске этой проблемы ....

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Попробуйте:

DesktopWindow.AlertButton.Style = FindResource("GreenAlertButtonStyle") as Style;
0 голосов
/ 24 сентября 2011

После явной настройки фона необходимо очистить BackgroundProperty, а затем установить новый стиль.

button1.ClearValue(BackgroundProperty);
...