使用附加的属性在XAML中设置WPF元素的动画

本文关键字:设置 WPF 动画 元素 XAML 属性 | 更新日期: 2023-09-27 18:21:38

我的ViewModel中的一个属性触发了我的动画。如果我将TargetProperty设置为Width,那么下面的代码实际上可以用于增长图像。

接下来,我想实际上下移动图像。为此,我在图像周围添加了一个Canvas组件,以便能够基于Canvas.Top属性设置动画。在图像上设置Canvas.Top会将其移动到我想要的位置。

然而,如果我将StoryBoard.TargetProperty设置为Canvas.Top,我会得到一个错误:

无法解析属性路径中的所有属性引用Canvas.Top.

<Style x:Key="LoadingImageAnimation" TargetType="{x:Type Image}">
  <Style.Triggers>
    <DataTrigger Binding="{Binding IsLoading}" Value="True">
      <DataTrigger.EnterActions>
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation From="10" To="250" AutoReverse="True" Duration="0:0:30"
                             Storyboard.TargetProperty="Canvas.Top"/>
          </Storyboard>
        </BeginStoryboard>
      </DataTrigger.EnterActions>
    </DataTrigger>
  </Style.Triggers>
</Style>

我的方法是完全错误的,还是只是找到附属财产的问题?

使用附加的属性在XAML中设置WPF元素的动画

对属性路径语法进行了一些挖掘,解决方案实际上很简单。需要添加括号:

Storyboard.TargetProperty="(Canvas.Top)"

动画没有我想要的那么流畅。。但至少它现在起作用了。