вы должны сначала установить e.Handled = true;
в вашей функции ExampleHandlerDown
, чтобы она знала, что нужно вызвать MouseUp после обработанного события Down
private void ExampleHandlerDown(object sender, MouseEventArgs e)
{
Console.WriteLine("Mouse Down");
e.Handled = true;
}
Почему это работает?
Отсутствие обработки события нажатия мыши (особенно предварительного просмотра события мыши) приведет к тому, что событие нажатия мыши перейдет к следующему слою, который является картой; Это означает, что карта также получает событие мыши. Карта делает что-то подозрительное, когда появляется событие нажатия мыши, препятствующее работе мыши.
Добавьте это, чтобы понять, что я имею в виду
MainMap.MouseDown += MainMap_MouseDown;
MainMap.MouseUp += MainMap_MouseUp;
private void MainMap_MouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Map Mouse Up");
}
private void MainMap_MouseDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Map Mouse Down <-- Something going on in here");
}
Закомментируйте ваш e.Handled = true
, и вы увидите это в этом выводе
Mouse Down
Map Mouse Down <-- Something going on in here
Map Mouse Up
Вставьте e.Handled = true
строку обратно, и вы увидите этот вывод
Mouse Down
Mouse Up
Map Mouse Up
Таким образом, вы увидите, что любые необработанные события передаются на карту. Вероятно, вам следует обработать событие мыши, чтобы карта не делала странных вещей, которые вам тоже не нужны. Я думаю, это не делает ничего подозрительного, если щелкнуть правой кнопкой мыши. Вам нужно будет увидеть источник карт bing, чтобы увидеть, что он на самом деле делает