/// <summary> /// Called before the <see cref="TextInput"/> event occurs. /// </summary> /// <param name="e">The event args.</param> protected virtual void OnTextInput(TextInputEventArgs e) { }
protected override void OnTextInput(TextInputEventArgs e) { HandleTextInput(e.Text); }
private void ProcessRawEvent(RawInputEventArgs e) { IInputElement element = FocusedElement; if (element != null) { var keyInput = e as RawKeyEventArgs; if (keyInput != null) { switch (keyInput.Type) { case RawKeyEventType.KeyDown: case RawKeyEventType.KeyUp: var routedEvent = keyInput.Type == RawKeyEventType.KeyDown ? InputElement.KeyDownEvent : InputElement.KeyUpEvent; KeyEventArgs ev = new KeyEventArgs { RoutedEvent = routedEvent, Device = this, Key = keyInput.Key, Modifiers = keyInput.Modifiers, Source = element, }; IVisual currentHandler = element; while (currentHandler != null && !ev.Handled && keyInput.Type == RawKeyEventType.KeyDown) { var bindings = (currentHandler as IInputElement)?.KeyBindings; if(bindings!=null) foreach (var binding in bindings) { if(ev.Handled) break; binding.TryHandle(ev); } currentHandler = currentHandler.VisualParent; } element.RaiseEvent(ev); e.Handled = ev.Handled; break; } } var text = e as RawTextInputEventArgs; if (text != null) { var ev = new TextInputEventArgs() { Device = this, Text = text.Text, Source = element, RoutedEvent = InputElement.TextInputEvent }; element.RaiseEvent(ev); e.Handled = ev.Handled; } } }
private void ProcessRawEvent(RawInputEventArgs e) { IInputElement element = FocusedElement; if (element != null) { var keyInput = e as RawKeyEventArgs; if (keyInput != null) { switch (keyInput.Type) { case RawKeyEventType.KeyDown: case RawKeyEventType.KeyUp: var routedEvent = keyInput.Type == RawKeyEventType.KeyDown ? InputElement.KeyDownEvent : InputElement.KeyUpEvent; KeyEventArgs ev = new KeyEventArgs { RoutedEvent = routedEvent, Device = this, Key = keyInput.Key, Modifiers = keyInput.Modifiers, Source = element, }; IVisual currentHandler = element; while (currentHandler != null && !ev.Handled && keyInput.Type == RawKeyEventType.KeyDown) { var bindings = (currentHandler as IInputElement)?.KeyBindings; if (bindings != null) { foreach (var binding in bindings) { if (ev.Handled) { break; } binding.TryHandle(ev); } } currentHandler = currentHandler.VisualParent; } element.RaiseEvent(ev); e.Handled = ev.Handled; break; } } var text = e as RawTextInputEventArgs; if (text != null) { var ev = new TextInputEventArgs() { Device = this, Text = text.Text, Source = element, RoutedEvent = InputElement.TextInputEvent }; element.RaiseEvent(ev); e.Handled = ev.Handled; } } }
/// <summary> /// Handles a key being pressed in the menu. /// </summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event args.</param> protected virtual void OnTextInput(object sender, TextInputEventArgs e) { if (!string.IsNullOrWhiteSpace(e.Text)) { var text = e.Text.ToUpper(); var focus = _registered .FirstOrDefault(x => x.Item1 == text && x.Item2.IsEffectivelyVisible)?.Item2; focus?.RaiseEvent(new RoutedEventArgs(AccessKeyHandler.AccessKeyPressedEvent)); e.Handled = true; } }