название события для добавления или удаления дочерних элементов InkCanvas с использованием wpf

#wpf #events

#wpf #Мероприятия

Вопрос:

У меня есть Inkcanvas в моем проекте (MyPaint), Как называется событие для добавления или удаления дочерних элементов (UIElement) из InkCanvas. например, я хочу обработать это событие: myInkCanvas.Дочерние элементы.remove(myRectangle) или этот пример: myInkCanvas.Дочерние элементы.Добавить(myRectangle)

Ответ №1:

Вы не можете прослушать событие, которое запускается при добавлении элементов в коллекцию дочерних элементов или удалении из нее. Вызывается виртуальный защищенный метод, который вы могли бы использовать, называемый OnVisualChildrenChanged.

Это напрямую не привязано к коллекции дочерних элементов, поскольку элементы могут добавлять / удалять визуальные элементы отдельно от этого. Но для InkCanvas это, вероятно, было бы безопасно.

Итак, вы бы использовали что-то вроде:

 public class MyInkCanvas : InkCanvas {
    protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved) {
        // TODO: Raise event or do something
        base.OnVisualChildrenChanged(visualAdded, visualRemoved);
    }
}
  

Ответ №2:

Для чего именно вам это нужно? Можете ли вы вместо этого использовать событие StrokeCollected?

Комментарии:

1. Нет события strokeCollected, используемого для объекта stroke, и не используемого для пользовательского элемента, например, объектов rectangle или ellipse