private async void LoadImageFile_OnClick(object sender, RoutedEventArgs e)
        {
            var filePicker = new FileOpenPicker();

            filePicker.FileTypeFilter.Add(".jpg");
            filePicker.FileTypeFilter.Add(".jpeg");
            filePicker.FileTypeFilter.Add(".ppm");

            var result = await filePicker.PickSingleFileAsync();

            if (result != null)
            {
                _map.DeleteImage();
                MapScrollViewer.ChangeView(0, 0, 1);
                if (result.FileType.Equals(".ppm"))
                {
                    var ppm = new PpmFile();
                    await ppm.ReadPpmFile(result);

                    _map.CreateImage(ppm);
                }
                else
                {
                    _map.CreateImage(result);
                }
            }
        }
        private void FitContent(int width, int height)
        {
            var    currentZoom = MapScrollViewer.ZoomFactor;
            double scaleX      = MapScrollViewer.ActualWidth / width;
            double scaleY      = MapScrollViewer.ActualHeight / height;

            var newZoom = (float)(currentZoom * Math.Min(scaleX, scaleY));

            newZoom = Math.Max(newZoom, MapScrollViewer.MinZoomFactor);
            newZoom = Math.Min(newZoom, MapScrollViewer.MaxZoomFactor);

            var currentPan = new Vector2((float)MapScrollViewer.HorizontalOffset,
                                         (float)MapScrollViewer.VerticalOffset);

            var centerOffset = new Vector2((float)MapScrollViewer.ViewportWidth,
                                           (float)MapScrollViewer.ViewportHeight) / 2;

            var newPan = ((currentPan + centerOffset) * newZoom / currentZoom) - centerOffset;

            if (double.IsNaN(newPan.X) || double.IsNaN(newPan.Y) || double.IsNaN(newZoom))
            {
                return;
            }
            MapScrollViewer.ChangeView(newPan.X, newPan.Y, newZoom);
        }
        private void Pan(Point curContentMousePoint)
        {
            Vector2 dragOffset = new Vector2((float)curContentMousePoint.X - (float)_mouseStart.X,
                                             (float)curContentMousePoint.Y - (float)_mouseStart.Y);

            var dragOffsetX = MapScrollViewer.HorizontalOffset - dragOffset.X * MapController.Instance.Zoom;
            var dragOffsetY = MapScrollViewer.VerticalOffset - dragOffset.Y * MapController.Instance.Zoom;

            MapScrollViewer.ChangeView(dragOffsetX, dragOffsetY, null);
        }