Commands in WPF
Commands in WPF
Introduction In this article we will see what Commands are and how we can use them in WPF. Commands It is often helpful to focus on what the user wants our application to do. WPF supports this through the command abstraction - a command is an action the application performs at the user's request. WPF's command system lets us treat them as different expressions of the same command. The command system lets a UI element provide a single handler for a command, reducing clutter and improving the clarity of your code. The way in which a command is invoked isn't usually important. Whether the user presses Ctrl-C, selects the Edit -> Copy menu item, or clicks the Copy button on the toolbar, the application's response should be the same in each case: it should copy the current selection to the clipboard. So let's have a sample application that will describe the above described things. Creating a WPF Application Fire up Visual Studio 2008 and Create a WPF Application, name it as CommandsWPF.
Now let's have few controls that would fulfil our sample to understand Commands. Such as some Buttons displaying Copy, Cut, and Paste. And obviously a Text Box that would be the target where we can see the application working.
Now we will see how Commands can be applied to the respective Clipboard Buttons. Now run the application and see the output as, all the buttons are in disabled.
Even if you select the text nothing happens, that is because we haven't added the Target Control to handle. Add the CommandTarget property and set the Bindings as follows:
Now run the application and see how we have achieved the Clipboard Commands in Buttons.
As soon as you select the Text the Cut and Copy Buttons are enabled.
As soon as you perform the Copy or Cut Commands operation Paste Button is enabled.
By default TextBox has the Clipboard as ContextMenu, so even if we don't add commands in Buttons the Menu is displayed.
Hope this article helps for the beginning in Commands in WPF. In next part we will explore more.
Introduction In Part I of this article series we have seen the basics of using Commands. In this article we will explore more on that. Concepts of Command System There are five concepts related to Command System: 1. Command Object - An object identifying a particular Command, such as Copy or Paste. 2. Input Binding - An association between a particular input (e.g. CTRL+C) and a Command (e.g. Copy) 3. Command Source - The object that invoked the Command, such as a Button or Input Binding. 4. Command Target - The UI element that will be asked to execute the Command. 5. Command Binding - A declaration that a particular UI element knows how to handle a particular Command. Let's modify our Application a bit. As follows:
As you see above we have a Button that will display the properties when it is clicked. Remember that in Windows ALT+ENTER is the Command that will execute the Command for displaying Properties. Let's have implemented the concepts that we have just discussed about.
As you see from the above Code Display, we have a CommandBinding object that takes the argument as a Command. On Executed event handler we have just displayed a MessageBox. Let's run the application.
So we can have our own display if we want to display our custom Properties Window in this event handler. Hope this article helps learning the CommandBinding concept.
As you see above we have only a TextBox control that doesn't have any Commands associated. Now in Code behind retain the CommandBinding. We have to just create an InputBinding object with the proper Command and KeyGestures. Follow the below code:
As you see above we have created the InputBinding object with ALT+ENTER as the KeyGesture. Now let's run the application and see by pressing the above key combination what happens.
And we have the Command successfully running on KeyGesture. Now we can have key combination of our choice and it will handle the Properties Command.