private void MainWindow_Loaded(object sender, EventArgs loadedEvent) { MainGrid.SizeChanged += MapHost_SizeChanged; int pixelWidth = (int)MainGrid.ActualWidth; int pixelHeight = (int)MainGrid.ActualHeight; bool hasNativeTouchInput = HasTouchInput(); int maxDeviceTouchCount = GetMaxDeviceTouchCount(); m_mapImage.Init(pixelWidth, pixelHeight, m_oversampleScale, hasNativeTouchInput, maxDeviceTouchCount); MapHost.Source = m_mapImage; MapHost.Width = pixelWidth; MapHost.Height = pixelHeight; m_mapImage.RespondToResize(pixelWidth, pixelHeight); m_mapImage.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged; CompositionTarget.Rendering += CompositionTarget_Rendering; if (m_mapImage.IsInKioskMode()) { Application.Current.Resources.Source = new Uri("KioskStyle.xaml", UriKind.RelativeOrAbsolute); } if (m_mapImage.ShouldStartFullscreen()) { SetFullScreen(true); } MouseLeftButtonDown += (o, e) => { if (m_isMouseInputActive) { m_mapImage.HandlePanStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers); } }; PreviewMouseLeftButtonUp += (o, e) => { if (m_isMouseInputActive) { m_mapImage.HandlePanEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers); } }; MouseRightButtonDown += (o, e) => { if (m_isMouseInputActive) { m_mapImage.HandleRotateStartEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers); } }; PreviewMouseRightButtonUp += (o, e) => { if (m_isMouseInputActive) { m_mapImage.HandleRotateEndEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), Keyboard.Modifiers); } }; MouseWheel += (o, e) => { if (m_isMouseInputActive) { m_mapImage.HandleZoomEvent((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y), e.Delta, Keyboard.Modifiers); } else { m_mapImage.SaveInputTime(); } }; MouseLeave += (o, e) => { if (m_isMouseInputActive) { m_mapImage.SetAllInputEventsToPointerUp((int)(e.GetPosition(null).X), (int)(e.GetPosition(null).Y)); } else { m_mapImage.SaveInputTime(); } }; MouseMove += (o, e) => { var position = e.GetPosition(null); if (position != m_lastMovePosition) { if (m_isMouseInputActive) { m_lastMovePosition = e.GetPosition(null); m_mapImage.HandleMouseMoveEvent((int)position.X, (int)position.Y, Keyboard.Modifiers); } else { m_mapImage.SaveInputTime(); } } }; MouseEnter += (o, e) => { if (m_isMouseInputActive) { EnableInput(); } else { m_mapImage.SaveInputTime(); } }; KeyDown += OnKeyDown; MouseDown += MainWindow_MouseDown; PreviewMouseDown += (o, e) => { m_mapImage.HandlePreviewMouseDown((int)e.GetPosition(null).X, (int)e.GetPosition(null).Y, Keyboard.Modifiers); m_buttonsDown++; }; PreviewMouseUp += (o, e) => { m_buttonsDown--; }; PreviewMouseWheel += (o, e) => { m_mapImage.SaveInputTime(); }; MouseUp += MainWindow_MouseUp; TouchDown += OnTouchDown; TouchUp += OnTouchUp; TouchMove += OnTouchMove; TouchLeave += (o, e) => { if (m_isTouchInputActive) { m_mapImage.SetTouchInputEventToPointerUp(CheckAndGetZeroIndexedId(e.TouchDevice.Id)); RemoveTouchId(e.TouchDevice.Id); } else { m_mapImage.SaveInputTime(); } }; Dispatcher.Hooks.DispatcherInactive += new EventHandler(DispatcherInactive); }