0 out of 3 rated this helpful - Rate this topic

ApplicationCommands Class

Provides a standard set of application related commands.

System.Object
  System.Windows.Input.ApplicationCommands

Namespace:  System.Windows.Input
Assembly:  PresentationCore (in PresentationCore.dll)
public static class ApplicationCommands

The ApplicationCommands type exposes the following members.

  Name Description
Public property Static member CancelPrint Gets the value that represents the Cancel Print command.
Public property Static member Close Gets the value that represents the Close command.
Public property Static member ContextMenu Gets the value that represents the Context Menu command.
Public property Static member Copy Gets the value that represents the Copy command.
Public property Static member CorrectionList Gets the value that represents the Correction List command.
Public property Static member Cut Gets the value that represents the Cut command.
Public property Static member Delete Gets the value that represents the Delete command.
Public property Static member Find Gets the value that represents the Find command.
Public property Static member Help Gets the value that represents the Help command.
Public property Static member New Gets the value that represents the New command.
Public property Static member NotACommand Represents a command which is always ignored.
Public property Static member Open Gets the value that represents the Open command.
Public property Static member Paste Gets the value that represents the Paste command.
Public property Static member Print Gets the value that represents the Print command.
Public property Static member PrintPreview Gets the value that represents the Print Preview command.
Public property Static member Properties Gets the value that represents the Properties command.
Public property Static member Redo Gets the value that represents the Redo command.
Public property Static member Replace Gets the value that represents the Replace command.
Public property Static member Save Gets the value that represents the Save command.
Public property Static member SaveAs Gets the value that represents the Save As command.
Public property Static member SelectAll Gets the value that represents the Select All command.
Public property Static member Stop Gets the value that represents the Stop command.
Public property Static member Undo Gets the value that represents the Undo command.
Top

The commands in the ApplicationCommands class and commands in the other command library classes, such as ComponentCommands and NavigationCommands, are intended to represent a set of common commands that application programmers encounter frequently. The commands only represent the instance of the RoutedCommand and not the implementation logic for the command. The implementation logic is bound to the command with a CommandBinding. For example, if the Close command is executed on a control, the logic which performs the Close command may not be provided by the control, so the application writer will be responsible for writing the logic that determines how the control will handle the command.

Many controls do provide implementation logic for many of the commands in the command library. For example, the TextBox class provides logic for the Paste, Cut, Copy, Undo, and Redo commands.

For more information on commands and commanding see the Commanding Overview.

The following example shows how to hook up a RoutedCommand to a Control which has built in support for the command. For a complete sample which hooks up commands to multiple sources, see the Create a Custom RoutedCommand Sample sample.

Windows Presentation Foundation (WPF) provides a library of common commands which application programmers encounter regularly. The classes which comprise the command library are: ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands, and EditingCommands.

The static RoutedCommand objects which make up these classes do not supply command logic. The logic for the command is associated with the command with a CommandBinding. Some controls have built in CommandBindings for some commands. This mechanism allows the semantics of a command to stay the same, while the actual implementation is can change. A TextBox, for example, handles the Paste command differently than a control designed to support images, but the basic idea of what it means to paste something stays the same. The command logic cannot be supplied by the command, but rather must be supplied by the control or the application.

Many controls in WPF do have built in support for some of the commands in the command library. TextBox, for example, supports many of the application edit commands such as Paste, Copy, Cut, Redo, and Undo. The application developer does not have to do anything special to get these commands to work with these controls. If the TextBox is the command target when the command is executed, it will handle the command using the CommandBinding that is built into the control.

The following shows how to use a MenuItem as the command source for the Paste command, where a TextBox is the target of the command. All the logic that defines how the TextBox performs the paste is built into the TextBox control.

A MenuItem is created and it's Command property is set to the Paste command. The CommandTarget is not explicitly set to the TextBox object. When the CommandTarget is not set, the target for the command is the element which has keyboard focus. If the element which has keyboard focus does not support the Paste command or cannot currently execute the paste command (the clipboard is empty, for example) then the MenuItem would be grayed out.


<Window x:Class="SDKSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MenuItemCommandTask"
    >
    <DockPanel>
      <Menu DockPanel.Dock="Top">
        <MenuItem Command="ApplicationCommands.Paste" Width="75" />
      </Menu>
      <TextBox BorderBrush="Black" BorderThickness="2" Margin="25"
               TextWrapping="Wrap">
        The MenuItem will not be enabled until
        this TextBox gets keyboard focus  
      </TextBox>
    </DockPanel>
</Window>



// Window1 constructor
public Window1()
{
    InitializeComponent();

    // Instantiating UIElements.
    DockPanel mainPanel = new DockPanel();
    Menu mainMenu = new Menu();
    MenuItem pasteMenuItem = new MenuItem();
    TextBox mainTextBox = new TextBox();

    // Associating the MenuItem with the Paste command.
    pasteMenuItem.Command = ApplicationCommands.Paste;

    // Setting properties on the TextBox.
    mainTextBox.Text =
        "The MenuItem will not be enabled until this TextBox receives keyboard focus.";
    mainTextBox.Margin = new Thickness(25);
    mainTextBox.BorderBrush = Brushes.Black;
    mainTextBox.BorderThickness = new Thickness(2);
    mainTextBox.TextWrapping = TextWrapping.Wrap;

    // Attaching UIElements to the Window.
    this.AddChild(mainPanel);
    mainMenu.Items.Add(pasteMenuItem);
    mainPanel.Children.Add(mainMenu);
    mainPanel.Children.Add(mainTextBox);

    // Defining DockPanel layout.
    DockPanel.SetDock(mainMenu, Dock.Top);
    DockPanel.SetDock(mainTextBox, Dock.Bottom);
}


More Code

How to: Hook Up a Command to a Control with No Command Support The following example shows how to hook up a RoutedCommand to a Control which does not have built in support for the command. For a complete sample which hooks up commands to multiple sources, see the Create a Custom RoutedCommand Sample sample.

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ