Канцелярская кнопка WPF Bing Maps последовательно приземляется вдали от позиции мыши - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь выбросить файл на карту, который затем поместит булавку с путем, прикрепленным к булавке (чтобы я мог щелкнуть по булавке и перейти к пути в проводнике Windows).

ОднакоПин, кажется, падает под значком карты Grid.Column(0), который был также , упомянутый здесь , хотя дальнейшее обсуждение не ведется.

Если приложение находится на другом дисплее, то, похоже, штифтпадение за пределами вида справа.

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

Если проблема связана с grid.column, как я могу объяснить это?

Что-то вроде: pt.x += worldMap.width/2

Вот мое окно: Window Layout

Это моя функция fileDidDrop:

        private void File_Drop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

                // File dir
                Console.WriteLine(files[0].ToString());

                // Get mouse coords
                Point pt = Mouse.GetPosition(worldMap);

                Location dropLoc = worldMap.ViewportPointToLocation(pt);

                new Location(pt.X,pt.Y);

                GeoPushpin newPin = new GeoPushpin();
                newPin.Location = dropLoc;
                worldMap.Children.Add(newPin);
            }
        }

А это XAML для моего worldMap

            <m:Map x:Name="worldMap" 
                   CredentialsProvider="MY_KEY" 
                   Mode="Road"  
                   Grid.Column="1" 
                   ZoomLevel="4" 
                   Center="-27.608,134.8099"
                   Drop="File_Drop" 
                   AllowDrop="True">
            </m:Map>

Та.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

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

Это означает, что мы можем отрегулировать pt по положению мыши относительно экрана и решаемой проблемы.

private void File_Drop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

            // File dir
            Console.WriteLine(files[0].ToString());

            // Get mouse coords
            Point mouse = PointToScreen(e.GetPosition(this));
            Point pt = Mouse.GetPosition(worldMap);

            Point adjustedPt = new Point();
            adjustedPt.X = pt.X + mouse.X;
            adjustedPt.Y = pt.Y + mouse.Y;

            Location dropLoc = worldMap.ViewportPointToLocation(adjustedPt);

            GeoPushpin newPin = new GeoPushpin();
            newPin.Location = dropLoc;
            worldMap.Children.Add(newPin);
        }
    }
0 голосов
/ 09 июля 2019

Полагаю, что, как они упоминали в ссылке, это может быть проблема с пользовательскими push-выводами. Вы можете попробовать использовать элементы управления, которые наследуются от карты только как многоугольники карты, и вы можете нарисовать в ней push-pin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...