C # WPF - событие Canvas MouseMove запускается, даже когда мышь перемещается над дочерним элементом управления - PullRequest
0 голосов
/ 04 июня 2018

Как сделать так, чтобы событие Canvas MouseMove срабатывало, только если моя мышь находится над Canvas и только Canvas?

У меня TextBox как потомокCanvas, и он все еще срабатывает, когда моя мышь перемещается над этим TextBox, я бы хотел, чтобы этого не происходило, он должен срабатывать только, когда мышь перемещается, например, над Canvas фоном / пробелом.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Как сделать так, чтобы событие canvas MouseMove срабатывало, только если моя мышь находится над Canvas и Canvas only?

Вы не можете предотвратитьсобытие сработало, но вы можете проверить, находится ли мышь над областью Canvas в вашем обработчике событий, и просто ничего не делать, если это не так:

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    if (Mouse.DirectlyOver == sender)
    {
        //your code...
    }
    //else, i.e. when the mouse moves over the TextBox or another child element, do nothing
}
0 голосов
/ 04 июня 2018

Вы должны прослушать предварительную версию этого события на холсте PreviewMouseMove и установить e.Handled = true.Посмотрите на этот URL https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/routed-events-overview

...