Mega Code Archive

 
Categories / C# / WPF
 

Use CommandBinding to Bind to ApplicationCommands

<Window x:Class="Commands.SimpleDocument"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="SimpleDocument" Height="300" Width="300">     <Grid>       <Grid.RowDefinitions>         <RowDefinition Height="Auto"></RowDefinition>         <RowDefinition Height="Auto"></RowDefinition>         <RowDefinition></RowDefinition>       </Grid.RowDefinitions>       <Menu Grid.Row="0">         <MenuItem Header="File">           <MenuItem Command="New"></MenuItem>           <MenuItem Command="Open"></MenuItem>           <MenuItem Command="Save"></MenuItem>           <MenuItem Command="SaveAs"></MenuItem>           <Separator></Separator>           <MenuItem Command="Close"></MenuItem>         </MenuItem>       </Menu>       <ToolBarTray Grid.Row="1">         <ToolBar>         <Button Command="New">New</Button>           <Button Command="Open">Open</Button>           <Button Command="Save">Save</Button>               </ToolBar>         <ToolBar>           <Button Command="Cut">Cut</Button>           <Button Command="Copy">Copy</Button>           <Button Command="Paste">Paste</Button>                    </ToolBar>       </ToolBarTray>       <TextBox Name="txt" Margin="5" Grid.Row="2"                 TextWrapping="Wrap" AcceptsReturn="True"                TextChanged="txt_TextChanged"></TextBox>     </Grid> </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 Commands {     public partial class SimpleDocument : System.Windows.Window     {         public SimpleDocument()         {             InitializeComponent();             CommandBinding binding;             binding = new CommandBinding(ApplicationCommands.New);             binding.Executed += NewCommand;             this.CommandBindings.Add(binding);             binding = new CommandBinding(ApplicationCommands.Open);             binding.Executed += OpenCommand;             this.CommandBindings.Add(binding);             binding = new CommandBinding(ApplicationCommands.Save);             binding.Executed += SaveCommand_Executed;             binding.CanExecute += SaveCommand_CanExecute;             this.CommandBindings.Add(binding);         }         private void NewCommand(object sender, ExecutedRoutedEventArgs e)         {             Console.WriteLine("New command triggered with " + e.Source.ToString());             isDirty = false;                   }         private void OpenCommand(object sender, ExecutedRoutedEventArgs e)         {             isDirty = false;         }         private void SaveCommand_Executed(object sender, ExecutedRoutedEventArgs e)         {             Console.WriteLine("Save command triggered with " + e.Source.ToString());             isDirty = false;         }         private bool isDirty = false;         private void txt_TextChanged(object sender, RoutedEventArgs e)         {             isDirty = true;         }         private void SaveCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)         {                         e.CanExecute = isDirty;         }     } }