Creating CommandBinding and attaching an Executed and CanExecute handler
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CommandHandlerProcedural" > </Window> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Input Imports System.Windows.Media Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Public Sub New() InitializeComponent() Dim MainStackPanel As New StackPanel() Me.AddChild(MainStackPanel) Dim CommandButton As New Button() CommandButton.Command = ApplicationCommands.Open CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)" MainStackPanel.Children.Add(CommandButton) Dim OpenCmdBinding As New CommandBinding(ApplicationCommands.Open, AddressOf OpenCmdExecuted, AddressOf OpenCmdCanExecute) Me.CommandBindings.Add(OpenCmdBinding) Dim OpenCmdKeyBinding As New KeyBinding(ApplicationCommands.Open, Key.R, ModifierKeys.Control) Me.InputBindings.Add(OpenCmdKeyBinding) End Sub Private Sub OpenCmdExecuted(target As Object, e As ExecutedRoutedEventArgs) MessageBox.Show("The command has been invoked.") End Sub Private Sub OpenCmdCanExecute(sender As Object, e As CanExecuteRoutedEventArgs) e.CanExecute = True End Sub End Class End Namespace