Пытался найти хороший способ сказать это ... Итак, мой код сбрасывает путевую точку на навигационной карте при двойном щелчке. После того, как первая путевая точка будет удалена, я хочу создать линию между путевой точкой и положением курсора мыши. Кажется, это работает, но после того, как нарисована линия, я больше не могу взаимодействовать с картой или сбрасывать любые другие путевые точки. События двойного щелчка не запускаются, так как кажется, что поток постоянно перерисовывает строку в mouse_move, который является событием в StackPanel.
public async void _navigationChartPanel_MouseMove(object sender, MouseEventArgs e)
{
foreach (var element in _panelChart.Children)
{
if (element is Line && ((Line)element).Name == "RangeBearingLine")
{
index = _panelChart.Children.IndexOf(element);
break;
}
}
if (index >= 0)
{
_panelChart.Children.RemoveAt(index);
}
var line = new Line
{
Name = "RangeBearingLine",
StrokeThickness = 1,
Stroke = System.Windows.Media.Brushes.Red,
X1 = _parent._routePlanner.lastWaypointLoc.X,
Y1 = _parent._routePlanner.lastWaypointLoc.Y,
X2 = mouseClick.X,
Y2 = mouseClick.Y
};
_panelChart.Children.Add(line);
Насколько я понимаю, мне нужно отобразить строку под элементом управления, где она все еще видна, но не мешает мне взаимодействовать с пользовательским интерфейсом. Я не эксперт по WPF, но я не могу придумать другой способ отобразить линию, которая следует за мышью, кроме как запускать событие MouseMove снова и снова. Есть ли лучший способ?