Вы можете получить тип элемента UIE, по которому в данный момент движется мышь, используя событие MouseMove
. Поскольку это пузырьковое событие, вы можете прикрепить обработчик к контейнеру, например Canvas.
Элемент UIE, над которым в данный момент движется мышь, можно получить из свойства MouseEventArgs
OriginalSource
.
Следовательно, чтобы определить тип, по которому движется мышь, вы можете использовать код, подобный следующему: -
void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Type currentType = e.OriginalSource.GetType();
// Make decisions based on value of currentType here
}
Как бы вы ни были осторожны, MouseMove часто срабатывает, когда пользователь перемещает мышь, поэтому вы можете отложить любую тяжелую работу до некоторого периода времени после последнего перемещения мыши.
К сожалению, нет события всплывающей мыши над событием.
Другой альтернативой является присоединение одного и того же обработчика MouseEnter к каждому дочернему элементу UIE, который вы добавляете в Canvas. В этом случае вы можете использовать sender
вместо e.OriginalSource
. Вы должны быть осторожны, чтобы удалить обработчик, если элемент удаляется из Canvas, иначе вы можете создать то, что может показаться утечкой памяти.