所以我有一个应用了样式的按钮。按钮的代码是:
<Button Command="w:Command.ShowTBDisplay" Style="{DynamicResource button_displayOptions}" Content="Display TextBlock" Height="34.5" Margin="0,4,0,0" Name="btn_displayTB" />
单击该按钮时,我想要更改其背景颜色(永久更改,直到单击其他按钮)。我想要使用的颜色是dynamicResource ..
在ShowTBDisplay_Executed方法中,我有这样的代码:
btn_displayTB.Background = FindResource("cClickColor") as Brush;
但是当我这样做时,没有任何反应,没有设置颜色。
我认为Style的颜色会覆盖我尝试将其更改为......但我不确定。
那么我该如何更改应用了样式的按钮的backColor。
这是按钮的样式,以及我想要使用的颜色(两种样式都在app.xaml文件中):
<Style x:Key="button_displayOptions" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle x:Name="rectangle" Fill="{DynamicResource cMenuBackground}"/>
<ContentPresenter x:Name="tb" TextBlock.Foreground="White" HorizontalAlignment="Left" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Margin="8,5,0,5" Height="19.5"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="rectangle" Value="{DynamicResource cMenuItemHighlight}"/>
<Setter Property="TextBlock.Foreground" TargetName="tb" Value="Black"/>
</Trigger>
<Trigger Property="IsPressed" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<SolidColorBrush x:Key="cMenuItemHighlight">#FFAFAFAF</SolidColorBrush>
谢谢!
答案 0 :(得分:4)
您的模板会覆盖默认模板,而Button的Background
属性不再执行任何操作,您需要使用TemplateBinding
将模板内的某些控件绑定到属性。
编辑:矩形在模板中不应具有具体的填充值,这可能是您想要的:
<Style x:Key="button_displayOptions" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{DynamicResource cMenuBackground}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle x:Name="rectangle" Fill="{TemplateBinding Background}" />
<ContentPresenter x:Name="tb" TextBlock.Foreground="White" HorizontalAlignment="Left"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="Center" Margin="8,5,0,5" Height="19.5" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True" />
<Trigger Property="IsDefaulted" Value="True" />
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="rectangle"
Value="{DynamicResource cMenuItemHighlight}" />
<Setter Property="TextBlock.Foreground" TargetName="tb" Value="Black" />
</Trigger>
<Trigger Property="IsPressed" Value="True" />
<Trigger Property="IsEnabled" Value="False" />
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
请注意新的Setter
将Background
设置为您的资源,将TemplateBinding
设置为Rectangle.Fill
。