繁体   English   中英

以编程方式更改按钮背景不起作用

[英]Changing Button Background Programmatically not Working

我有一个堆栈面板,其中包含三个按钮。 单击按钮后,我希望背景保持永久更改,但是似乎无法正常工作。

我尝试按照下面的程序设置背景色,但是似乎不起作用。 当我以编程方式设置前景色有效时,请按照说明更改颜色。 我认为当我在XAML中使用按钮模板时(在其中分配背景色),它优先于程序更改。

尝试更改背景:

AColour.Background = Brushes.Black;
BColour.Background = Brushes.Red;
CColour.Background = Brushes.Black;

尝试更改前景(有效):

AColour.Foreground = Brushes.Black;
BColour.Foreground = Brushes.Red;
CColour.Foreground = Brushes.Black;

XAML(按钮模板):

<Window.Resources>
    <ControlTemplate x:Key="ButtonStyle" TargetType="{x:Type Button}">
        <Border Name="body" Background="#AEEEEE" BorderThickness="0" BorderBrush="DimGray" Padding="2">
            <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center" />
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" TargetName="body" Value="#12CCD3"/>
            </Trigger>
            <Trigger Property="IsPressed" Value="True">
                <Setter Property="Background" TargetName="body" Value="#009DA2"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

XAML按钮声明(除名称外的所有3个按钮相同):

 <Button Cursor="Hand" x:Name="AColour" Height="40" Template="{StaticResource ButtonStyle}" Width ="100" Click="A_Click">

有什么方法(如果模板具有优先权)覆盖模板并以编程方式更改背景?

因为您已将按钮的背景显式设置为“ #AEEEEE”,所以该按钮的背景不会被代码更改。

我认为您应该在模板中使用TemplateBinding,如下所示:

<Border  Background="{TemplateBinding Background}">
        <ContentPresenter ...... />
    </Border>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM