powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Button и два Storyboard
7 сообщений из 7, страница 1 из 1
Button и два Storyboard
    #37530041
Woldemar665
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю кнопку, убиваю в ней стандартные тригеры. Добавляю свои. Создаю два сториборда, один - мигание кнопки(он запускается по событию Loaded), второй - плавное изменение background когда наводимся мышкой ( запускается по событию MouseEnter и останавливается по MouseLeave). Кнопка мигает, при наведении background меняется, но после того как убираю курсор с кнопки она начинает мигать(так и должно быть) но в конце "итерации мигания" показывает background из второго сториборда. Причем если во втором Storyboard в каждую анимацию добавить FillBehavior="Stop" то мигает потом нормально, но и Background который он установил пропадает сразу после установки.
Storyboard-1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<Storyboard x:Key="OnLoaded1" RepeatBehavior="Forever">
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.5" Value="#FF277201"/>
        <SplineColorKeyFrame KeyTime="0:0:1" Value="#FF040601"/>
    </ColorAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[2].(GradientStop.Offset)" Storyboard.TargetName="Chrome">
        <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="0.353"/>
    </DoubleAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[2].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.5" Value="#FF4DFF00"/>
        <SplineColorKeyFrame KeyTime="0:0:1" Value="#FF48E902"/>
    </ColorAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[3].(GradientStop.Offset)" Storyboard.TargetName="Chrome">
        <SplineDoubleKeyFrame KeyTime="0" Value="0.638"/>
        <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="0.638"/>
    </DoubleAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[3].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.5" Value="#FF4DFF00"/>
        <SplineColorKeyFrame KeyTime="0:0:1" Value="#FF48E902"/>
    </ColorAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.5" Value="#FF277201"/>
        <SplineColorKeyFrame KeyTime="0:0:1" Value="#FF040601"/>
    </ColorAnimationUsingKeyFrames>
</Storyboard>
Storyboard-2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<Storyboard x:Key="OnMouseOver">
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.2" Value="#FFB5F993"/>
    </ColorAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[2].(GradientStop.Offset)" Storyboard.TargetName="Chrome">
        <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="0.504"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[3].(GradientStop.Offset)" Storyboard.TargetName="Chrome" >
        <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="0.513"/>
    </DoubleAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[2].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.2" Value="#FF8DF95C"/>
    </ColorAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[3].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.2" Value="#FF3DB600"/>
    </ColorAnimationUsingKeyFrames>
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="Chrome">
        <SplineColorKeyFrame KeyTime="0:0:0.2" Value="#FF3DB600" />
    </ColorAnimationUsingKeyFrames>
</Storyboard>
Тригеры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<ControlTemplate.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
        <BeginStoryboard x:Name="OnLoaded1_BeginStoryboard" Storyboard="{StaticResource OnLoaded1}"/>
    </EventTrigger>
    <EventTrigger RoutedEvent="Mouse.MouseEnter">
        <BeginStoryboard x:Name="OnMouseOver_BeginStoryboard1" Storyboard="{StaticResource OnMouseOver}"/>
    </EventTrigger>
    <EventTrigger RoutedEvent="Mouse.MouseLeave">
        <StopStoryboard BeginStoryboardName="OnMouseOver_BeginStoryboard1"/>
        <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/>
    </EventTrigger>
</ControlTemplate.Triggers>
Кнопка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<Button Content="Ви отримали нове повідомлення" FontSize="18.667" FontFamily="Segoe UI Semibold" Style="{DynamicResource ButtonStyle2}">
<Button Content="Ви отримали нове повідомлення" FontSize="18.667" FontFamily="Segoe UI Semibold" Style="{DynamicResource ButtonStyle2}">
    <Button.Background>
        <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
            <GradientStop Color="#FF98E277" Offset="0"/>
            <GradientStop Color="#FF98E277" Offset="0.5"/>
            <GradientStop Color="#FF3DC600" Offset="0.513"/>
            <GradientStop Color="#FF3DC600" Offset="1"/>
        </LinearGradientBrush>
    </Button.Background>
</Button>
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37530460
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задай transition между storyboard и надежней всего переопределить styles, а не баловаться с триггерами. В Blend'е это делается достаточно просто.
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37531367
Woldemar665
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

В WPF я новичок, поэтому не мог бы ты объяснить (или дать ссылку) что такое transition, как с ним работать и как запускать storyboard без использования тригеров. Заранее спасибо.
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37531930
Woldemar665
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решена. Надо было просто в 1-ом Storyboard-е задать начальные значения.

SeVa,

Но про transition и storyboard без тригеров, всетаки кинь ссылку пожалуйста. Интересно посмотреть другие варианты решения.
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37532672
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37533840
Woldemar665
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SeVa,

Спасибо.
...
Рейтинг: 0 / 0
Button и два Storyboard
    #37534646
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант2
тут более интуитивное объяснение.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Button и два Storyboard
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]