C#WPF在RunTime上更改按钮颜色资源

时间:2018-05-22 15:11:32

标签: c# wpf button colors static

我有一个按钮,我希望根据文件是否存在来获得动态颜色。

我使用两个资源来执行此操作,一个资源是一种颜色,一个是SolidColorBrush。它们被声明为

<Window.Resources>
<Color x:Key="ColorName">Red</Color>
<SolidColorBrush x:Key="ButtonColor1" Color="{StaticResource ColorName}" />
</Window.Resources>

现在,我的按钮是以一种奇怪的方式完成的,因为我想改变高光颜色,它就这样完成了

Button Grid.Row="1" Grid.Column="2" Height="25" Width="25" 
HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click" 
Name="SalutButton">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Background" Value="{StaticResource 
ButtonColor1}"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}">
                                <Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="1">
                                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="LightGreen"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

我尝试更改资源的代码是:

Resources["ColorName"] = System.Windows.Media.Colors.Green;

这成功地更改了资源颜色名称,但是在初始化期间已经生成了buttoncolor1资源,并采用了colorname的默认颜色,即红色,所以即使我正在更改资源而不更新。

有什么想法吗?

0 个答案:

没有答案
相关问题