<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CommandHandling" Height="300" Width="300" > <DockPanel> <Menu DockPanel.Dock="Top"> <MenuItem Header="_File"> <MenuItem Command="New" /> </MenuItem> </Menu> <TextBox x:Name="inputBox" TextChanged="OnTextboxTextChanged" /> </DockPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace WpfApplication1 { public partial class Window1 : Window { bool unsavedChanges = false; public Window1() { InitializeComponent(); CommandBinding cmdBindingNew = new CommandBinding(ApplicationCommands.New); cmdBindingNew.Executed += NewCommandHandler; CommandBindings.Add(cmdBindingNew); } void NewCommandHandler(object sender, ExecutedRoutedEventArgs e) { if (unsavedChanges) { MessageBoxResult result = MessageBox.Show(this,"Save changes to existing document?", "New",MessageBoxButton.YesNoCancel); if (result == MessageBoxResult.Cancel){ return; } if (result == MessageBoxResult.Yes){ SaveChanges(); } } inputBox.Clear(); } private void OnTextboxTextChanged(object sender, RoutedEventArgs e){ unsavedChanges = true; Console.WriteLine("changed"); } private void SaveChanges(){ unsavedChanges = false; Console.WriteLine("saved"); } } }