Как установить свойство children в обработчике события canvas? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть холст, и внутри него будет форма.Этот холст имеет обработчик событий MouseLeftButtonDown.Затем я переместил фигуру на холсте в новое место, однако ничего не происходит.

Вот как эта фигура добавляется:

public MainWindow()
    {
        InitializeComponent();
        Rectangle ShapeRect = new Rectangle() { Width=10,Height=10,Fill=Brushes.Blue};
        Canvas_1.Children.Add(ShapeRect);            
    }

Вот обработчик события:

private void Canvas_1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Canvas c = Canvas_1;
        var firstchild = c.Children[0];
        var RectCopy = c.Children.OfType<Rectangle>().FirstOrDefault();              

        Canvas.SetTop(RectCopy, Canvas.GetTop(RectCopy) + 500);
        Canvas.SetLeft(RectCopy, Canvas.GetLeft(RectCopy) + 500);
    }

Я протестировал код, в котором нет ошибок, и все строки выполняются, но явно не имеют никакого эффекта.Я думаю, это связано с тем, что RectCopy не ShapeRect.Любое другое решение или ответы приветствуются.Спасибо.

1 Ответ

0 голосов
/ 09 декабря 2018

Добавьте следующие строки внизу вашего метода Initialize:

Canvas.SetTop(ShapeRect, 0);
Canvas.SetLeft(ShapeRect, 0);

Когда вы попадаете в ваш обработчик, значения Canvas.GetTop(...) равны NaN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...