WPF VB.Net

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="SimpleDocument" Height="300" Width="300">
    
      
        
        
        
      

      
        
          
          
          
          
          
          
        
      
      
        
        New
          Open
          Save        
      

        
          Cut
          Copy
          Paste
          
        

      
                     TextWrapping="Wrap" AcceptsReturn="True"
               TextChanged="txt_TextChanged">
    


//File:Window.xaml.vb
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Shapes
Namespace Commands
  Public Partial Class SimpleDocument
    Inherits System.Windows.Window
    Public Sub New()
      InitializeComponent()
      Dim binding As CommandBinding
      binding = New CommandBinding(ApplicationCommands.[New])
      AddHandler binding.Executed, AddressOf NewCommand
      Me.CommandBindings.Add(binding)
      binding = New CommandBinding(ApplicationCommands.Open)
      AddHandler binding.Executed, AddressOf OpenCommand
      Me.CommandBindings.Add(binding)
      binding = New CommandBinding(ApplicationCommands.Save)
      AddHandler binding.Executed, AddressOf SaveCommand_Executed
      AddHandler binding.CanExecute, AddressOf SaveCommand_CanExecute
      Me.CommandBindings.Add(binding)
    End Sub
    Private Sub NewCommand(sender As Object, e As ExecutedRoutedEventArgs)
      Console.WriteLine("New command triggered with " & e.Source.ToString())
      isDirty = False
    End Sub
    Private Sub OpenCommand(sender As Object, e As ExecutedRoutedEventArgs)
      isDirty = False
    End Sub
    Private Sub SaveCommand_Executed(sender As Object, e As ExecutedRoutedEventArgs)
      Console.WriteLine("Save command triggered with " & e.Source.ToString())
      isDirty = False
    End Sub
    Private isDirty As Boolean = False
    Private Sub txt_TextChanged(sender As Object, e As RoutedEventArgs)
      isDirty = True
    End Sub
    Private Sub SaveCommand_CanExecute(sender As Object, e As CanExecuteRoutedEventArgs)
      e.CanExecute = isDirty
    End Sub
  End Class
End Namespace