2016-03-10 4 views
0

Как ниже, я хотел бы установить TargetName в moveImage, чтобы изображение перемещалось по экрану влево-вправо. Visual Studio выдает ошибку и не уверен, как правильно ее ссылаться. Я хотел бы сохранить изображение в ресурсном словаре и принести его программно, как требуется.Как использовать ресурс в раскадровке с помощью TargetName

У меня есть следующий ресурс:

  <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> 

И принесли раскадровки и изображение следующим образом в MainWindow.xaml.cs:

myCanvas.Children.Add(myCanvas.FindResource("movingImage") as UIElement); 
sb = myCanvas.FindResource("myStory") as Storyboard; 
sb.Begin(); 

Ошибка я получаю:

Необработанное исключение типа «System.InvalidOperationException» произошло в PresentationFramework.dll

Дополнительная информация: имя 'movingImage' не может быть найдено в поле имени 'System.Windows.Controls.Canvas'.

+0

Какую ошибку вы получаете? –

+0

Необработанное исключение типа «System.InvalidOperationException» произошло в PresentationFramework.dll Дополнительная информация: имя «movingImage» не может быть найдено в области имен «System.Windows.Controls.Canvas». – BibraLakeJose

ответ

0

ли эти изменения:

  1. Изменить ключ управления изображения в movingImageKey и имя movingImage.

    <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(); 
    
+0

Спасибо. Я внес изменения, и он работает по назначению. – BibraLakeJose

+0

затем отметьте как правильный ответ – AnjumSKhan

Смежные вопросы