[英]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.