#1,081 – Adding CommandBinding to Top-Level CommandBindings
May 28, 2014 2 Comments
In the example below, we bind the ApplicationCommands.Open command to some custom code by adding a CommandBinding instance to the top-level window’s CommandBindings property.
public MainWindow() { InitializeComponent(); this.DataContext = this; this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, (sender, e) => { MessageBox.Show("Executing the Open command"); }, (sender, e) => { e.CanExecute = CanOpenIsChecked; })); }
We can now bind the Command property of any UI element under the top-level window to the ApplicationCommands.Open command. Below, we bind two different buttons to the Open command. Clicking on either button will result in execution of the same lambda expression.
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Commands" Width="320" Height="220"> <StackPanel> <Button Content="Open A" Command="ApplicationCommands.Open" Margin="10" Padding="10,3" HorizontalAlignment="Center" /> <Button Content="Open B" Command="ApplicationCommands.Open" Margin="10" Padding="10,3" HorizontalAlignment="Center" /> <CheckBox Content="Can Open" IsChecked="{Binding CanOpenIsChecked}" Margin="10"/> </StackPanel> </Window>
Pingback: Dew Drop – May 28, 2014 (#1785) | Morning Dew
Pingback: #1,082 – Adding CommandBindings to Individual UI Elements | 2,000 Things You Should Know About WPF