У меня есть кнопка, которая показывает текст и изображение: для этого я использую StackPanel с TextBlock и изображением внутри него.
При изменении переменной «ActiveState» также должен измениться фон StackPanel, для этого я использую DataTriggers
ActiveState = 0 -> Red / ActiveState = 1 -> Blue / ActiveState = 2-> мигающий синий (для этого я использую раскадровку и цветовую анимацию)
Мигающий триггер (значение = 2) работает нормально, но два других триггера (значение = 0 + значение = 1) не работаютработает.
Когда я удаляю фон панели стека (Background = "Transparent"), первые два триггера работают, но последний получает следующее исключение:
необработанное исключениетипа «System.InvalidOperationException» произошла в PresentationFramework.dll
Дополнительная информация: свойство фона не указывает на объект зависимости в пути '(0). (1)'
Это мой код:
<Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<StackPanel Orientation="Horizontal" Name="SelectButtonStackpanel" Background="Transparent">
<TextBlock Text="{Binding Text}"/>
<Image Source="{Binding Image}" Stretch="Uniform" Height="40" Width="40"/>
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding ActiveState}" Value="0">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding ActiveState}" Value="1">
<Setter Property="Background" Value="Blue"/>
</DataTrigger>
<DataTrigger Binding="{Binding ActiveState}" Value="2">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="(StackPanel.Background).(SolidColorBrush.Color)"
To="Blue" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"
>
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="(StackPanel.Background).(SolidColorBrush.Color)"
Duration="0:0:1"
>
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
У вас есть идеи, как мне заставить работать все три триггера?
С наилучшими пожеланиями Фил