Установите VerticalAlignment в EventTrigger

Как мне установить свойство, которое, похоже, не имеет связанного с ним типа анимации? В частности, я хотел бы изменить VerticalAlignment элемента управления всякий раз, когда активируется EventTrigger. Вот мой текущий статус/неудачная попытка:

    <EventTrigger RoutedEvent="my:MenuHelper.MenuIsReversed">
          <BeginStoryboard>
              <Storyboard>
                  <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="VerticalAlignment" Storyboard.TargetName="Bouncy_Bar">
                    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Top"/>
                  </ObjectAnimationUsingKeyFrames>
              </Storyboard>
          </BeginStoryboard>
   </EventTrigger>

Что дает это исключение:

Не удается анимировать свойство «VerticalAlignment» в «System.Windows.Controls.Border» с помощью «System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames». Подробнее см. во внутреннем исключении.

Внутреннее исключение:

Анимации, примененные к свойству «VerticalAlignment», вычисляют текущее значение «Верх», которое не является допустимым значением для свойства.

Я не уверен, неправильно ли я определяю тип VerticalAlignment или это просто неправильный способ установки нетипичного свойства анимации.


person Bill Tarbell    schedule 15.10.2012    source источник


Ответы (1)


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

    <EventTrigger RoutedEvent="pill:PillMenuHelper.MenuIsReversed">
          <BeginStoryboard>
              <Storyboard>
                  <DoubleAnimation Storyboard.TargetName="Bouncy_Bar" Storyboard.TargetProperty="RenderTransform.Children[1].ScaleY" To="-1" Duration="0:0:.002"/>
                  <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="VerticalAlignment" Storyboard.TargetName="Bouncy_Bar">
                    <DiscreteObjectKeyFrame KeyTime="0:0:0">
                        <DiscreteObjectKeyFrame.Value>
                            <VerticalAlignment>Top</VerticalAlignment>
                        </DiscreteObjectKeyFrame.Value>
                    </DiscreteObjectKeyFrame>
                  </ObjectAnimationUsingKeyFrames>
              </Storyboard>
          </BeginStoryboard>
   </EventTrigger>
person Bill Tarbell    schedule 15.10.2012