C# 如何使用TargetName在故事板中使用资源

C# 如何使用TargetName在故事板中使用资源,c#,wpf,animation,storyboard,resourcedictionary,C#,Wpf,Animation,Storyboard,Resourcedictionary,如下所示,我想将TargetName设置为movingImage,以便图像在屏幕上从左向右移动。Visual Studio引发错误,不确定如何正确引用该错误。我希望将图像保存在资源字典中,并根据需要以编程方式将其引入 我有以下资源: <Canvas.Resources> <Storyboard x:Key="myStory"> <DoubleAnimation Storyboard.T

如下所示,我想将TargetName设置为movingImage,以便图像在屏幕上从左向右移动。Visual Studio引发错误,不确定如何正确引用该错误。我希望将图像保存在资源字典中,并根据需要以编程方式将其引入

我有以下资源:

            <Canvas.Resources>

            <Storyboard x:Key="myStory">
                <DoubleAnimation Storyboard.TargetName="movingImage"
                                 Storyboard.TargetProperty="(Canvas.Left)"
                                 Duration="0:0:5"
                                 From="-157"
                                 To="78"/>
            </Storyboard>

            <Image x:Key="movingImage"
                   Canvas.Left="-157"
                   Source="Resource\myImage.png"/>

            </Canvas.Resources>
我得到的错误是:


PresentationFramework.dll中发生类型为“System.InvalidOperationException”的未处理异常

其他信息:在中找不到“movingImage”名称 命名“System.Windows.Controls.Canvas”的作用域

请执行以下更改:

  • 将图像控件的键更改为
    movingImageKey
    ,将名称更改为
    movingImage

       <Image x:Key="movingImageKey" x:Name="movingImage" 
               Canvas.Left="-157"
               Source="Penguins.jpg"/>
    

  • 您遇到了什么错误?PresentationFramework.dll中发生了类型为“System.InvalidOperationException”的未处理异常。其他信息:在“System.Windows.Controls.Canvas”的名称范围中找不到“movingImage”名称。谢谢。我做了建议的更改,它按预期工作。X:密钥在我的网格中不存在
       <Image x:Key="movingImageKey" x:Name="movingImage" 
               Canvas.Left="-157"
               Source="Penguins.jpg"/>
    
        NameScope.SetNameScope(myCanvas, new NameScope());
    
        Image img = (myCanvas.FindResource("movingImageKey") as Image);
        myCanvas.RegisterName(img.Name, img);
        myCanvas.Children.Add(img);
    
        Storyboard sb = myCanvas.FindResource("myStory") as Storyboard;
        sb.Begin();