Błędy przy użyciu Storyboard.SetTargetProperty

0

Cześć na początku dodam że dopiero zacząłem uczyć się C# więc proszę o wyrozumiałość.
Naukę zaczełem z ksiażką rusz głowa i mam do napisania a właściwie przepisania kod programu ale niestety ciagle mam błędy w tej linii

Storyboard.SetTargetProperty(animation, propertyToAnimate);

Błędy:

Error   1   The best overloaded method match for 'System.Windows.Media.Animation.Storyboard.SetTargetProperty(System.Windows.DependencyObject, System.Windows.PropertyPath)' has some invalid arguments
Error   2   Argument 2: cannot convert from 'string' to 'System.Windows.PropertyPath'

Kod programu:

namespace WpfApplication5
{

    public partial class MainWindow : Window
    {
        Random rand = 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, rand.Next((int)playArea.ActualHeight - 100), 
                                rand.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(rand.Next(4,6)))
            };
            Storyboard.SetTarget(animation, enemy);
            Storyboard.SetTargetProperty(animation, propertyToAnimate);
            storyboard.Children.Add(animation);
            storyboard.Begin();
        }
    }
}

Co robię źle ?

1

Na wstępie... zaczĄłem, a nie zaczełem.

Spójrz na metodę w dokumentacji klasy: https://msdn.microsoft.com/en[...]ry/cc672995%28v=vs.95%29.aspx
Drugi parametr to PropertyPath. Więc jest niezgodność typów. Zauważ, że tu: https://msdn.microsoft.com/en[...]yboard.settargetproperty.aspx metoda przyjmuje faktycznie string, więc to możliwe, że zależy od wersji frameworka.

Jeżeli nie rozumiesz tego błędu, to nawet nie ma sensu bym Ci tłumaczył jak to poprawić i jak się poprawia takie niezgodności z różnych wersji. Chyba nauka też od takiego poziomu też nie jest dobrym pomysłem jak widać.

2

Wiem, że ten temat jest trochę przeterminowany ale kupiłem tą samą książkę i miałem ten sam problem, być może ktoś jeszcze skorzysta z tego rozwiązania. Na Windowsie 7 zamiast linijki

Storyboard.SetTargetProperty(animation, propertyToAnimate); 

należy użyć

Storyboard.SetTargetProperty(animation, new PropertyPath(propertyToAnimate)); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0