Как сделать анимацию смены цвета фона у Button WPF C#?

164
17 марта 2019, 01:50

Делаю приложение на WPF C#. Хочу сделать для кнопки анимацию мерцания, через привязку к свойству.

Кнопка xaml:

<Button x:Name="btAction" Margin="0" BorderThickness="0" HorizontalContentAlignment="Left" Padding="5" Height="25" FontFamily="/LK_Teacher;component/Assets/Fonts/#Font Awesome 5 Free Regular">
            <Button.ToolTip>
                <ToolTip>
                    <StackPanel Orientation="Horizontal">
                        <Label x:Name="labTag" FontFamily="/LK_Teacher;component/Assets/Fonts/#Font Awesome 5 Free Regular" FontSize="18" VerticalAlignment="Center" Padding="0" VerticalContentAlignment="Center" Margin="0,0,5,0"></Label>
                        <TextBlock x:Name="tblTitle" FontSize="14" FontFamily="/LK_Teacher;component/Assets/Fonts/#Roboto" VerticalAlignment="Center" Margin="5,0"></TextBlock>
                        <Label x:Name="labType" Margin="5,0,0,0" FontFamily="/LK_Teacher;component/Assets/Fonts/#Font Awesome 5 Free Regular" FontSize="16" VerticalContentAlignment="Center" Grid.RowSpan="2"/>
                    </StackPanel>
                </ToolTip>
            </Button.ToolTip>
        </Button>

Стили для кнопки которые привязываются во время работы программы:

<Style x:Key="BorderB" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center" Margin="5,0,0,0" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="ClassButton" TargetType="{x:Type Button}" BasedOn="{StaticResource BorderB}">
    <Setter Property="Button.Background" Value="#E3B638"/>
    <Style.Resources>
        <Style>
            <Setter Property="Label.Content" Value="&#xF501;"></Setter>
            <Setter Property="Label.Foreground" Value="#E3B638"/>
        </Style>
    </Style.Resources>
    <Style.Triggers>
        <Trigger Property="Border.IsMouseOver" Value="True">
            <Setter Property="Border.Background" Value="#FAD25F"/>
        </Trigger>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding ActiveMode, ElementName=UCEventItem, Mode=TwoWay}" Value="True"/>
            </MultiDataTrigger.Conditions>
            <MultiDataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
                                To="Blue" AutoReverse="True" Duration="0:0:1.5" RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </MultiDataTrigger.EnterActions>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>

Свойство C#:

private bool activeMode;
    public bool ActiveMode {
        get { return activeMode; }
        set
        {
            activeMode = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("ActiveMode"));
            }
        }
    }

Мне нужно, чтобы при изменении свойства активировалась анимация смены цвета и наоборот. Вообщем все так и работает, только после срабатывания Trigger'а IsMouseOver (изменения цвета при наведении) анимация прекращается. И как сделать чтобы работало все грамотно я не знаю.

READ ALSO
Поиск подстроки в строке &ldquo;от&rdquo; и &ldquo;до&rdquo; C# [закрыт]

Поиск подстроки в строке “от” и “до” C# [закрыт]

Например хочу найти строку начинающую на "лала," а заканчивающуюся на "ooo" Можно ли это как-то реализовать?

163
Xamarin и USB устройство

Xamarin и USB устройство

Возникла необходимость подключение сканера штрихкодов к телефону на AndroidПодключение сканера будет через USB порт

154
Фон не формы а панели

Фон не формы а панели

У меня есть форма, на ней панель, у этой панели есть определенный фонНа панели есть кнопка у которой в свойствах указан цвет фона - Transparent

211
Разбить массив байтов(Bitarray) на 16 частей

Разбить массив байтов(Bitarray) на 16 частей

У меня есть массив битов размером 512 байт который я получаю следующим образом

171