InvalidOperationException未处理 - WPF路径

时间:2011-08-03 22:56:10

标签: c# .net wpf user-controls path

这是我的UserControl

<Grid x:Name="Grid">
    <Path Name="Path1" Data="M0.5,0.5 L179.5,0.5 L179.5,249.5 L0.5,249.5 z" Stretch="Fill" Stroke="Purple" StrokeThickness="1">
        <Path.Fill>
            <SolidColorBrush Color="Blue" Opacity="0.4"/>
        </Path.Fill>
    </Path>
    <Grid.Resources>
        <Storyboard x:Key="Path_Ani">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="Path1">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="-58.515"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="Path1">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="-129.167"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="Path1">
                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0.544"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Path1">
                <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0.806"/>
            </DoubleAnimationUsingKeyFrames>
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" Storyboard.TargetName="Path1">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="5.628"/>
            </DoubleAnimationUsingKeyFrames>
            <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(Path.Data).(PathGeometry.Figures)[0].(PathFigure.Segments)[1].(LineSegment.Point)" Storyboard.TargetName="Path1">
                <EasingPointKeyFrame KeyTime="0" Value="100.5,140.5"/>
                <EasingPointKeyFrame KeyTime="0:0:0.2" Value="104.175476605516,140.5"/>
            </PointAnimationUsingKeyFrames>
        </Storyboard>
    </Grid.Resources>
</Grid>

我称之为StoryBoard:

private void MyTest_MouseDown(object sender, MouseButtonEventArgs e)
{
    Storyboard sbdCardAnim = (Storyboard)MyTest.Grid.Resources["Path_Ani"];
    sbdCardAnim.Begin();
}

点击时出现此错误:

'[Unknown]' property does not point to a DependencyObject in path '(0).(1)[3].(2)'.

如何解决导致此错误的问题?

1 个答案:

答案 0 :(得分:1)

您的动画期望路径有一堆定义为RenderTransform的转换,但路径的实际RenderTransform似乎为空(因为它未定义)。

    <!-- The RenderTransform which is expected looks something like this
         (while no animation targets the third and therefore unknown transform
         it only makes sense for it to be a RotateTransform) -->
    <Path.RenderTransform>
        <TransformGroup>
            <ScaleTransform />
            <SkewTransform />
            <RotateTransform />
            <TranslateTransform />
        </TransformGroup>
    </Path.RenderTransform>

PointAnimation中的路径似乎也不适合路径中的实际数据,因为如果将RenderTransform定义为预期,仍会出现错误。