/// <summary> /// Initializes a new instance of the <see cref="CommandBinding"/> class. /// </summary> /// <param name="command">The command that is being bound.</param> /// <param name="executed">The handler for the command's <see cref="Executed"/> event.</param> /// <param name="canExecute">The handler for the command's <see cref="CanExecute"/> event.</param> public CommandBinding(ICommand command, UpfExecutedRoutedEventHandler executed, UpfCanExecuteRoutedEventHandler canExecute) { Contract.Require(command, nameof(command)); this.command = command; if (executed != null) { Executed += executed; } if (canExecute != null) { CanExecute += canExecute; } }
/// <summary> /// Initializes a new instance of the <see cref="TextEditingControl"/> class. /// </summary> /// <param name="uv">The Ultraviolet context.</param> /// <param name="name">The element's identifying name within its namescope.</param> public TextEditingControl(UltravioletContext uv, String name) : base(uv, name) { var canExecuteIsEditable = new UpfCanExecuteRoutedEventHandler(CanExecuteIsEditable); var canExecuteIsCaretVisible = new UpfCanExecuteRoutedEventHandler(CanExecuteIsCaretVisible); // Selection commands CommandManager.RegisterClassBindings(typeof(TextEditingControl), ApplicationCommands.SelectAll, ExecutedSelectAll, canExecuteIsCaretVisible, new KeyGesture(Key.A, ModifierKeys.Control, "Ctrl+A")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectRightByCharacter, ExecutedSelectRightByCharacter, canExecuteIsCaretVisible, new KeyGesture(Key.Right, ModifierKeys.Shift, "Shift+Right")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectLeftByCharacter, ExecutedSelectLeftByCharacter, canExecuteIsCaretVisible, new KeyGesture(Key.Left, ModifierKeys.Shift, "Shift+Left")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectRightByWord, ExecutedSelectRightByWord, canExecuteIsCaretVisible, new KeyGesture(Key.Right, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+Right")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectLeftByWord, ExecutedSelectLeftByWord, canExecuteIsCaretVisible, new KeyGesture(Key.Left, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+Left")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectDownByLine, ExecutedSelectDownByLine, canExecuteIsCaretVisible, new KeyGesture(Key.Down, ModifierKeys.Shift, "Shift+Down")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectUpByLine, ExecutedSelectUpByLine, canExecuteIsCaretVisible, new KeyGesture(Key.Up, ModifierKeys.Shift, "Shift+Up")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectDownByPage, ExecutedSelectDownByPage, canExecuteIsCaretVisible, new KeyGesture(Key.PageDown, ModifierKeys.Shift, "Shift+PageDown")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectUpByPage, ExecutedSelectUpByPage, canExecuteIsCaretVisible, new KeyGesture(Key.PageUp, ModifierKeys.Shift, "Shift+PageUp")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectToLineStart, ExecutedSelectToLineStart, canExecuteIsCaretVisible, new KeyGesture(Key.Home, ModifierKeys.Shift, "Shift+Home")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectToLineEnd, ExecutedSelectToLineEnd, canExecuteIsCaretVisible, new KeyGesture(Key.End, ModifierKeys.Shift, "Shift+End")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectToDocumentStart, ExecutedSelectToDocumentStart, canExecuteIsCaretVisible, new KeyGesture(Key.Home, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+Home")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.SelectToDocumentEnd, ExecutedSelectToDocumentEnd, canExecuteIsCaretVisible, new KeyGesture(Key.End, ModifierKeys.Control | ModifierKeys.Shift, "Ctrl+Shift+End")); // Movement commands CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveRightByCharacter, ExecutedMoveRightByCharacter, canExecuteIsCaretVisible, new KeyGesture(Key.Right, ModifierKeys.None, "Right")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveLeftByCharacter, ExecutedMoveLeftByCharacter, canExecuteIsCaretVisible, new KeyGesture(Key.Left, ModifierKeys.None, "Left")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveRightByWord, ExecutedMoveRightByWord, canExecuteIsCaretVisible, new KeyGesture(Key.Right, ModifierKeys.Control, "Ctrl+Right")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveLeftByWord, ExecutedMoveLeftByWord, canExecuteIsCaretVisible, new KeyGesture(Key.Left, ModifierKeys.Control, "Ctrl+Left")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveDownByLine, ExecutedMoveDownByLine, canExecuteIsCaretVisible, new KeyGesture(Key.Down, ModifierKeys.None, "Down")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveUpByLine, ExecutedMoveUpByLine, canExecuteIsCaretVisible, new KeyGesture(Key.Up, ModifierKeys.None, "Up")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveDownByPage, ExecutedMoveDownByPage, canExecuteIsCaretVisible, new KeyGesture(Key.PageDown, ModifierKeys.None, "PageDown")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveUpByPage, ExecutedMoveUpByPage, canExecuteIsCaretVisible, new KeyGesture(Key.PageUp, ModifierKeys.None, "PageUp")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveToLineStart, ExecutedMoveToLineStart, canExecuteIsCaretVisible, new KeyGesture(Key.Home, ModifierKeys.None, "Home")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveToLineEnd, ExecutedMoveToLineEnd, canExecuteIsCaretVisible, new KeyGesture(Key.End, ModifierKeys.None, "End")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveToDocumentStart, ExecutedMoveToDocumentStart, canExecuteIsCaretVisible, new KeyGesture(Key.Home, ModifierKeys.Control, "Ctrl+Home")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.MoveToDocumentEnd, ExecutedMoveToDocumentEnd, canExecuteIsCaretVisible, new KeyGesture(Key.End, ModifierKeys.Control, "Ctrl+End")); // Text editing commands CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.ToggleInsert, ExecutedToggleInsert, canExecuteIsCaretVisible, new KeyGesture(Key.Insert, ModifierKeys.None, "Insert")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.Backspace, ExecutedBackspace, canExecuteIsEditable, new KeyGesture(Key.Backspace, ModifierKeys.None, "Backspace")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.Delete, ExecutedDelete, canExecuteIsEditable, new KeyGesture(Key.Delete, ModifierKeys.None, "Delete")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.DeleteNextWord, ExecutedDeleteNextWord, canExecuteIsEditable, new KeyGesture(Key.Delete, ModifierKeys.Control, "Ctrl+Delete")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.DeletePreviousWord, ExecutedDeletePreviousWord, canExecuteIsEditable, new KeyGesture(Key.Backspace, ModifierKeys.Control, "Ctrl+Backspace")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.EnterParagraphBreak, ExecutedEnterParagraphBreak, CanExecuteEnterParagraphBreak, new KeyGesture(Key.Return, ModifierKeys.None, "Return"), new KeyGesture(Key.KeypadEnter, ModifierKeys.None, "KeypadEnter")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.EnterLineBreak, ExecutedEnterLineBreak, CanExecuteEnterLineBreak, new KeyGesture(Key.Return, ModifierKeys.Shift, "Shift+Return"), new KeyGesture(Key.KeypadEnter, ModifierKeys.Shift, "Shift+KeypadEnter")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.TabForward, ExecutedTabForward, CanExecuteTabForward, new KeyGesture(Key.Tab, ModifierKeys.None, "Tab")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), EditingCommands.TabBackward, ExecutedTabBackward, CanExecuteTabBackward, new KeyGesture(Key.Tab, ModifierKeys.Shift, "Shift+Tab")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), ApplicationCommands.Copy, ExecutedCopy, CanExecuteCopy, new KeyGesture(Key.C, ModifierKeys.Control, "Ctrl+C")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), ApplicationCommands.Cut, ExecutedCut, CanExecuteCut, new KeyGesture(Key.X, ModifierKeys.Control, "Ctrl+X")); CommandManager.RegisterClassBindings(typeof(TextEditingControl), ApplicationCommands.Paste, ExecutedPaste, CanExecutePaste, new KeyGesture(Key.V, ModifierKeys.Control, "Ctrl+V")); }