Я знаю, что подобный вопрос уже задавался ( здесь ), но ответ, данный там, мне не совсем подходит (так как мне нужен обычный триггер, а также EventTriggers для работы с этим, не DataTrigger). Кроме того, я думаю, что мое определение цели и триггер находятся в области видимости, которая была ошибкой в этом другом аналогичном посте.
У меня есть собственный стиль с пользовательским шаблоном кнопки, в котором я хочу изменить цвет фона как с анимацией, так и без.
Итак, у меня есть этот код XAML:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:h="clr-namespace:MainWindowsClient.Helpers"
xmlns:local="clr-namespace:MainWindowsClient">
<Style x:Key="LoginButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="10"/>
<Setter Property="FontFamily" Value="{StaticResource RobotoLight}"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" SnapsToDevicePixels="true">
<Border.Background>
<SolidColorBrush x:Name="BBB" Color="{StaticResource MattBlue}"/>
</Border.Background>
<ContentPresenter x:Name="contentPresenter"
Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Color" TargetName="BBB" Value="{StaticResource NormalGrey}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Когда я пытаюсь скомпилировать свой код, я получаю ошибку Cannot find the Trigger target 'BBB'. (The target must appear before any Setters, Triggers, or Conditions that use it.)
, даже если имя было объявлено перед секцией триггера.
Дело в том, что он работает, когда я заменяю Триггер на EventTrigger (который обращается к цвету таким же образом), как это внезапно работает:
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Color" Storyboard.TargetName="BBB" From="{StaticResource MattBlue}" To="{StaticResource LightBlue}" Duration="0:0:0.3"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
Я попытался перезапустить visual studio et c. который помог мне с другими ошибками XAML, но я все еще получаю ошибку.
Когда я пытаюсь использовать решение, указанное в первом посте Я связался для обычного триггера, я получаю ошибку Background is not supported in a Windows Presentation Foundation (WPF) project.
Буду очень признателен за любую помощь!
PS: Поскольку я хочу анимировать и цвет фона кнопки, я думаю, что я не могу просто установить BorderBru sh напрямую, но должен изменить цвет бру sh.