#1,078 – Defining a Command Binding Using Lambda Expressions
May 22, 2014 3 Comments
Recall that commands in WPF are objects that you bind UI elements to and that are in turn bound to code for executing the command and for knowing whether a command can be executed.
Below is an example that sets up a command binding using lambda expressions.
<Window.ContextMenu> <ContextMenu> <MenuItem Header="Open" Command="ApplicationCommands.Open"/> </ContextMenu> </Window.ContextMenu> <StackPanel> <Button Content="Open" Command="ApplicationCommands.Open" Margin="10" HorizontalAlignment="Center" /> <CheckBox Content="Can Open" IsChecked="{Binding CanOpenIsChecked}" Margin="10"/> </StackPanel>
We set up the command binding in the window’s constructor.
public partial class MainWindow : Window, INotifyPropertyChanged { public MainWindow() { InitializeComponent(); this.DataContext = this; CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, (sender, e) => { MessageBox.Show("Executing the Open command"); }, (sender, e) => { e.CanExecute = CanOpenIsChecked; })); } // INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged = delegate { }; private void RaisePropertyChanged(string propName) { PropertyChanged(this, new PropertyChangedEventArgs(propName)); } public bool CanOpenIsChecked { get; set; } }