У меня кнопка WPF в стиле, показанном ниже
<Style x:Key="InfoCenterButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Border x:Name="ButtonBorder" CornerRadius="5,5,5,5" BorderBrush="#aaa" BorderThickness="1,1,1,1" >
<Grid>
<TextBlock x:Name="ButtonTextBox" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap"
Text="{TemplateBinding Content}"
TextAlignment="Center" Margin="0,0,0,0" Foreground="White" FontSize="35" FontFamily="Arial">
<TextBlock.Effect>
<DropShadowEffect x:Name="TextShadow" BlurRadius="3" ShadowDepth="0"/>
</TextBlock.Effect>
</TextBlock>
</Grid>
<Border.Background>
<LinearGradientBrush EndPoint="0.504,1.5" StartPoint="0.504,0.03">
<GradientStop x:Name="ButtonBackgroundGradientStartColor" Color="#FFFFC934" Offset="0"/>
<GradientStop x:Name="ButtonBackgroundGradientEndColor" Color="#FFFFA200" Offset="0.567"/>
</LinearGradientBrush>
</Border.Background>
<Border.Effect>
<DropShadowEffect x:Name="DropShadow" Direction="270" Color="Black" Opacity=".50" ShadowDepth="4" RenderingBias="Quality" />
</Border.Effect>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="ButtonBorder" Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.504,1.5" StartPoint="0.504,0.03">
<GradientStop x:Name="ButtonBackgroundGradientPressedStartColor" Color="#FFFFC934" Offset="0"/>
<GradientStop x:Name="ButtonBackgroundGradientPressedEndColor" Color="#FFFFA200" Offset="0.567"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="ButtonBorder" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" BlurRadius="2" />
</Setter.Value>
</Setter>
<Setter TargetName="ButtonBorder" Property="Background" Value="#55aaaaaa"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я использую следующий код, чтобы получить именованные элементы для программного изменения атрибутов, т. Е.
GradientStop gsend = (GradientStop)mButtons[button].Template.FindName("ButtonBackgroundGradientEndColor", mButtons[button]);
if (gsend != null) gsend.Color = (Color)ColorConverter.ConvertFromString(menuoption[i].Attributes["bgendgradient"].Value);
Однако я не могунайдите именованный элемент в разделе ControlTemplate.Triggers XAML. То есть этот код не работает и возвращает ноль.
GradientStop gsend = (GradientStop)mButtons[button].Template.FindName("ButtonBackgroundGradientPressedEndColor", mButtons[button]);
gsent всегда равен нулю.