在EventTrigger中设置VerticalAlignment

时间:2012-10-15 18:20:39

标签: wpf xaml vertical-alignment 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>

产生此例外:

  

无法为a上的“VerticalAlignment”属性设置动画   'System.Windows.Controls.Border'使用了   'System.Windows.Media.Animation.ObjectAnimationUsingKeyFrames'。对于   细节见内部异常。

内部异常:

  

应用于“VerticalAlignment”属性的动画计算   当前值'Top',它不是该属性的有效值。

我不确定我是否正确地对VerticalAlignment类型进行了限定,或者这是否是设置非典型动画属性的错误方法。

1 个答案:

答案 0 :(得分:2)

对不起,快速回答我自己的问题。我发现我没有布置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>