2017-01-08 13 views
1
namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     Random random = new Random(); 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void startButton_Click(object sender, RoutedEventArgs e) 
     { 
      addEnemy(); 
     } 

     private void addEnemy() 
     { 
      ContentControl enemy = new ContentControl(); 
      enemy.Template = Resources["EnemyTemplate"] as ControlTemplate; 
      AnimateEnemy(enemy, 0, playArea.ActualWidth - 100, "(canvas.left)"); 
      AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100), 
       random.Next((int)playArea.ActualHeight - 100), "(canvas.top)"); 
      playArea.Children.Add(enemy); 
     } 

     private void AnimateEnemy(ContentControl enemy, double from, double to, string propertyToAnimate) 
     { 
      Storyboard storyboard = new Storyboard() { AutoReverse = true, RepeatBehavior = RepeatBehavior.Forever }; 
      DoubleAnimation animation = new DoubleAnimation() 
      { 
       From = from, 
       To = to, 
       Duration = new Duration(TimeSpan.FromSeconds(random.Next(4, 6))), 
      }; 
      Storyboard.SetTarget(animation, enemy); 
      Storyboard.SetTargetProperty(animation, new PropertyPath(propertyToAnimate)); 
      storyboard.Children.Add(animation); 
       //problem 
      storyboard.Begin(); 
     } 

    } 

$ マイエラー(「System.InvalidOperationException」種類の未処理の例外はPresentationFramework.dllC#のWPFエラー(System.InvalidOperationExceptionが)

で発生しました追加情報:プロパティパス内のすべてのプロパティの参照を解決できません。 '(canvas.left)'。該当するオブジェクトがプロパティをサポートしていることを確認してください。)

誰か助けてくれますか?

+0

あなたはおそらく、あなたが完全な名前空間で何を意味するか、完全な名前空間 – SLaks

+0

が必要ですか? –

+0

実際のタイプ/プロパティを反映するケース、たとえば '(Canvas.Left)'を使用してみてください。 –

答えて

0

プロパティ名では大文字と小文字が区別されます。 C anvasです。 L eftおよびC anvas。 T OP:

private void addEnemy() 
{ 
    ContentControl enemy = new ContentControl(); 
    enemy.Template = Resources["EnemyTemplate"] as ControlTemplate; 
    AnimateEnemy(enemy, 0, playArea.ActualWidth - 100, "(Canvas.Left)"); 
    AnimateEnemy(enemy, random.Next((int)playArea.ActualHeight - 100), 
     random.Next((int)playArea.ActualHeight - 100), "(Canvas.Top)"); 
    playArea.Children.Add(enemy); 
} 
+0

あなたは私のヒーローです! Thnxはいつもそれを見て忘れてしまった...私はredactorに間違ったキャンバスのスケールやプロパティを置いて、それに焦点を当てて、代わりに何を見ているか考えていた。(Thnxもう一度! –

+0

あなたは歓迎だが、答えを受け入れることを忘れないでください。 – mm8

+0

done =)スレッドを閉じるか受け入れる必要がありますか? –

関連する問題