- WPF Tutorial
- WPF - Home
- WPF - Overview
- WPF - Environment Setup
- WPF - Hello World
- WPF - XAML Overview
- WPF - Elements Tree
- WPF - Dependency Properties
- WPF - Routed Events
- WPF - Controls
- WPF - Layouts
- WPF - Nesting Of Layout
- WPF - Input
- WPF - Command Line
- WPF - Data Binding
- WPF - Resources
- WPF - Templates
- WPF - Styles
- WPF - Triggers
- WPF - Debugging
- WPF - Custom Controls
- WPF - Exception Handling
- WPF - Localization
- WPF - Interaction
- WPF - 2D Graphics
- WPF - 3D Graphics
- WPF - Multimedia
- WPF Useful Resources
- WPF - Quick Guide
- WPF - Useful Resources
- WPF - Discussion
WPF - RoutedCommands
RoutedCommands enable input handling at a more semantic level. These are actually simple instructions as New, Open, Copy, Cut, and Save. These commands are very useful and they can be accessed from a Menu or from a keyboard shortcut. It disables the controls if the command becomes unavailable. The following example defines the commands for Menu items.
Let’s create a new WPF project with the name WPFCommandsInput.
Drag a menu control to a stack panel and set the following properties and commands as shown in the following XAML file.
<Window x:Class = "WPFContextMenu.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local = "clr-namespace:WPFContextMenu" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "525"> <Grid> <StackPanel x:Name = "stack" Background = "Transparent"> <StackPanel.ContextMenu> <ContextMenu> <MenuItem Header = "New" Command = "New" /> <MenuItem Header = "Open" Command = "Open" /> <MenuItem Header = "Save" Command = "Save" /> </ContextMenu> </StackPanel.ContextMenu> <Menu> <MenuItem Header = "File" > <MenuItem Header = "New" Command = "New" /> <MenuItem Header = "Open" Command = "Open" /> <MenuItem Header = "Save" Command = "Save" /> </MenuItem> </Menu> </StackPanel> </Grid> </Window>
Here is the C# code in which different commands are handled.
using System.Windows; using System.Windows.Input; namespace WPFContextMenu { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); CommandBindings.Add(new CommandBinding(ApplicationCommands.New, NewExecuted, CanNew)); CommandBindings.Add(new CommandBinding(ApplicationCommands.Open, OpenExecuted, CanOpen)); CommandBindings.Add(new CommandBinding(ApplicationCommands.Save, SaveExecuted, CanSave)); } private void NewExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to create new file."); } private void CanNew(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } private void OpenExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to open existing file."); } private void CanOpen(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } private void SaveExecuted(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("You want to save a file."); } private void CanSave(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } } }
When the above code is compiled and executed, it will produce the following window −
Now you can access this menu items, either from the menu or from the shortcut keys commands. From either option, it will execute the commands.
To Continue Learning Please Login
Login with Google