开发者

How do I change the entire style of a button from code behind in realtime?

开发者 https://www.devze.com 2023-04-07 07:27 出处:网络
I have a button that flashes. I would like to change the entire button style from a resource dictionary when ever it flashes.

I have a button that flashes.

I would like to change the entire button style from a resource dictionary when ever it flashes.

I would think it would be like this:

DesktopWindow.AlertButton.Style = (Style)Des开发者_JS百科ktopWindow.Resources["GreenAlertButtonStyle"];

But that doesn't work. How do I do this? I cannot simply change the background color (although that's all I really want to do) because I want to preserve the triggers. When ever I change the background of the button right now, the mouseover triggers stop working....

The button:

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

I dont wanna hear it about doing a search for this issue....


Try:

DesktopWindow.AlertButton.Style = FindResource("GreenAlertButtonStyle") as Style;


After setting background explicitly you have to clear BackgroundProperty and then set new style.

button1.ClearValue(BackgroundProperty);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号