Зацикливание события при перерисовке Canvas WPF

Нужно было сделать программу наподобие паинта для отрисовки различных фигур, но столкнулся с тем, что при нажатии кнопки мыши вызывается событие Click, и заполняются X1 и Y1 линии (X2 и Y2 им равны соответственно), далее при движении мыши (событие MouseMove) обновляются X2 Y2 и линия перерисовывается (удаляется и заново добавляется - Canvas.Children.Add(line))

получается ты можешь тянуть эту линию, пока не нажмешь на мышь ещё раз (событие Click).

но проблема в том, что курсор в данный момент находится на линии, и при её удалении/добавлении происходит перерисовка канваса, даже если курсор стоит на месте, событие MouseMove вызывается ещё раз, и так по кругу, выходит что канвас постоянно перерисовывается, а событие постоянно вызывается, отчего другие события невозможно вызвать, не работает клик и линия прилипает к курсору. (Если подергать мышкой можно успеть нажать в тот момент пока линии нет под курсором и тогда она отрисуется как надо)

Можно ли как то отменить вызов события при перерисовке? а оставить только для движения?

Подвинуть курсор от линии не вариант, так как всё равно при определенном положении курсор будет на линии.

Пытался поставить флаг на момент отрисовки чтобы событие не вызывалось, но тогда он не рисует вообще.

Пробовал вызывать события асинхронно чтобы не блокировать форму, без результата.

Менял MouseMove на PreviewMouseMove, тоже не подходит.


Ответы (0 шт):