无法在情节提要中对翻译转换的 Y 属性进行动画处理



我正在尝试使画布上下移动,这应该是一个简单的任务,但我以某种方式无法做到:

<Window.Resources>
    <TranslateTransform x:Key="transform1" x:Name="testTransform" X="-24" Y="0" />
    <Storyboard x:Key="storyboard1">
        <DoubleAnimation Duration="0:0:0.4" Storyboard.TargetName="testTransform" Storyboard.TargetProperty="Y" By="6"
            AutoReverse="True" RepeatBehavior="Forever" EasingFunction="{StaticResource ease1}" />
    </Storyboard>
</Window.Resources>
<Window.Triggers>
    <EventTrigger RoutedEvent="Loaded">
        <BeginStoryboard Storyboard="{StaticResource storyboard1}" />
    </EventTrigger>
</Window.Triggers>
[...]
<Canvas x:Name="canvas1" RenderTransform="{StaticResource transform1}">
    <Path Data="{StaticResource amazingPath}" />
</Canvas>

我明白了这一点:

,而不是平稳地动画。

在presentationframework.dll

中出现了" system.invalidoperationException"类型的例外。

附加信息:'testTransform'名称在'testproject.mainwindow'的名称范围中找不到。

这里是怎么回事?

如果您设置了Storyboard.Target="{StaticResource transform1}",并且将EventTrigger放入窗口Style

,它可以工作
<Window.Resources>
    <TranslateTransform x:Key="transform1" X="-24" Y="0" />
    <Storyboard x:Key="storyboard1">
        <DoubleAnimation
            Duration="0:0:0.4"
            Storyboard.Target="{StaticResource transform1}"
            Storyboard.TargetProperty="Y" By="6"
            AutoReverse="True" RepeatBehavior="Forever" />
    </Storyboard>
</Window.Resources>
<Window.Style>
    <Style TargetType="Window">
        <Style.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard Storyboard="{StaticResource storyboard1}" />
            </EventTrigger>
        </Style.Triggers>
    </Style>
</Window.Style>
<Canvas RenderTransform="{StaticResource transform1}">
    ...
</Canvas>

Storyboard.TargetName属性设置为应用TranslateTransform的元素名称(Canvas)。

这有效:

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <TranslateTransform x:Key="transform1" x:Name="testTransform" X="-24" Y="0" />
        <Storyboard x:Key="storyboard1">
            <DoubleAnimation Duration="0:0:0.4" Storyboard.TargetName="canvas1" 
                             Storyboard.TargetProperty="RenderTransform.Y" By="6" AutoReverse="True" RepeatBehavior="Forever" />
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard Storyboard="{StaticResource storyboard1}" />
        </EventTrigger>
    </Window.Triggers>
    <Canvas x:Name="canvas1" RenderTransform="{StaticResource transform1}">
        <TextBlock>...</TextBlock>
    </Canvas>
</Window>

最新更新