/// <summary> /// Call this method in Loaded event as the event will be automatically deregistred when the FrameworkElement has been unloaded /// </summary> public static void RegisterBackKey(Page page) { var callback = new TypedEventHandler <CoreDispatcher, AcceleratorKeyEventArgs>( delegate(CoreDispatcher sender, AcceleratorKeyEventArgs args) { if (!args.Handled && args.VirtualKey == VirtualKey.Back && args.EventType == CoreAcceleratorKeyEventType.KeyUp) { var element = FocusManager.GetFocusedElement(); if (element is TextBox || element is PasswordBox || element is WebView) { return; } if (page.Frame.CanGoBack) { page.Frame.GoBack(); } } }); page.Dispatcher.AcceleratorKeyActivated += callback; SingleEvent.Register(page, (p, h) => p.Unloaded += h, (p, h) => p.Unloaded -= h, (o, a) => { page.Dispatcher.AcceleratorKeyActivated -= callback; }); }
/// <summary> /// Call this method in Loaded event as the event will be automatically deregistred when the FrameworkElement has been unloaded /// </summary> /// <param name="page"></param> /// <param name="handler"></param> public static void RegisterAcceleratorKeyActivated(FrameworkElement page, TypedEventHandler <CoreDispatcher, AcceleratorKeyEventArgs> handler) { page.Dispatcher.AcceleratorKeyActivated += handler; SingleEvent.Register(page, (p, h) => p.Unloaded += h, (p, h) => p.Unloaded -= h, (o, a) => { page.Dispatcher.AcceleratorKeyActivated -= handler; }); }