2017-01-17 3 views
0

у меня есть это:Как установить анимацию WPF Border без установки имени

<Border.Triggers> 
    <EventTrigger RoutedEvent="Border.MouseEnter"> 
     <EventTrigger.Actions> 
      <BeginStoryboard> 
       <Storyboard TargetProperty="Background"> 
        <ColorAnimation From="Red" To="Green" Duration="0:0:2" AutoReverse="True" RepeatBehavior="Forever" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger.Actions> 
    </EventTrigger> 
</Border.Triggers> 

Я хочу, чтобы изменить цвет фона при наведении мышью, как GradientStop или простых цвета, но я получаю ошибки. И где искать зависимости свойств зависимостей, я должен использовать в TargetProperty.

, например, это не работает либо

<Grid.Triggers> 
          <EventTrigger RoutedEvent="Grid.Loaded"> 
           <EventTrigger.Actions> 
            <BeginStoryboard> 
             <Storyboard TargetProperty="Background.GradientStops[1].Color"> 
              <ColorAnimation From="Red" 
                  To="Green" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever" /> 
             </Storyboard> 
            </BeginStoryboard> 
            <BeginStoryboard> 
             <Storyboard TargetProperty="Background.GradientStops[1].Offset"> 
              <DoubleAnimation From="0" 
                  To="1" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever"/> 
             </Storyboard> 
            </BeginStoryboard> 
           </EventTrigger.Actions> 
          </EventTrigger> 
         </Grid.Triggers> 
+0

Override это стиль и вызвать MouseOver и применить анимацию или просто установить цвет с триггером – chris579

+0

Смотрите здесь: http://stackoverflow.com/q/9145330/1136211. В принципе, вы не можете анимировать кисть (тип свойства Background) с помощью ColorAnimation. – Clemens

+0

Мне нужен подход, чтобы увеличить его, я пытаюсь научиться, но я не могу вычислить 1. название свойств 2. как задать конкретные аргументы в wpf – sasanaf

ответ

0

Вы должны установить фоновую свойство Border на кисть, которую вы хотите анимировать. Если нет кисти, ничего не нужно оживлять. Работает следующая надпись. Он одушевляет свойство цвет SolidColorBrush, который установлен в качестве фона на границе:

<Border Background="Transparent"> 
    <Border.Triggers> 
     <EventTrigger RoutedEvent="Border.MouseEnter"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="(Border.Background).(SolidColorBrush.Color)"> 
         <ColorAnimation From="Red" To="Green" Duration="0:0:2" AutoReverse="True" RepeatBehavior="Forever" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Border.Triggers> 
    <TextBlock>Border....</TextBlock> 
</Border> 

, например, это не работает либо

То же самое и здесь. Если вы хотите анимировать свойство Color GradientStop, вам необходимо убедиться, что на самом деле существует GradientStop для анимации, т. Е. Вы должны установить свойство Background для Grid на LinearGradientBrush. Это работает:

<Grid> 
    <Grid.Background> 
     <LinearGradientBrush> 
      <GradientStop /> 
      <GradientStop /> 
     </LinearGradientBrush> 
    </Grid.Background> 
    <Grid.Triggers> 
     <EventTrigger RoutedEvent="Grid.Loaded"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Background.GradientStops[0].Color"> 
         <ColorAnimation From="Red" 
                  To="Green" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever" /> 
        </Storyboard> 
       </BeginStoryboard> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Background.GradientStops[1].Offset"> 
         <DoubleAnimation From="0" 
                  To="1" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Grid.Triggers> 
    <TextBlock>Grid...</TextBlock> 
</Grid> 
+0

aight! Спасибо! – sasanaf

Смежные вопросы