Search code examples
wpf-controlsrouted-commands

How to override Copy command on WPF textbox?


I would like to override the behavior of RoutedUICommand "Copy" of a WPF TextBox.

Is it possible without creating a new TextBoxExtended class that inherits from TextBox?

I have reached that point, but now I am bit lost.

Private Sub tbSource_PreviewExecuted(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)

        Dim commandName = DirectCast(e.Command, Input.RoutedUICommand).Text

        If commandName = "Copy" Then

        End If

End Sub

Do you have any idea how to continue?


Solution

  • You can add a command binding to the text box to handle the "Copy" command. For example, like this:

    <StackPanel>
      <TextBlock x:Name="TextBox">
        <TextBlock.CommandBindings>
            <CommandBinding Command="{x:Static ApplicationCommands.Copy}"
                            Executed="CommandBinding_Executed"/>
        </TextBlock.CommandBindings>
      </TextBlock>
      <Button Content="Copy" 
              Command="{x:Static ApplicationCommands.Copy}"
              CommandTarget="{Binding ElementName=TextBox}"/>
    </StackPanel>