Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

ComponentCommands, classe

Mise à jour : novembre 2007

Fournit un ensemble standard de commandes relatives aux composants qui ont des combinaisons de touches prédéfinies et des propriétés RoutedUICommand.Text.

Espace de noms :  System.Windows.Input
Assembly :  PresentationCore (dans PresentationCore.dll)

public static class ComponentCommands
public final class ComponentCommands
public final class ComponentCommands
Vous ne pouvez pas créer directement une instance de cette classe dans XAML.

Les commandes dans la classe ComponentCommands et les commandes dans les autres classes de la bibliothèque de commandes, telles que ApplicationCommands et NavigationCommands, sont destinées à représenter un ensemble de commandes communes que les programmeurs d'application rencontrent fréquemment. Les commandes représentent seulement l'instance du RoutedCommand et pas la logique d'implémentation pour la commande. La logique d'implémentation est liée à la commande via un CommandBindings. Par exemple, si la commande MoveLeft est exécutée sur un contrôle (la cible de la commande), la logique qui exécute la commande MoveLeft ne peut pas être fournie par la cible de la commande, donc le writer d'application est chargé d'écrire la logique qui détermine comment la cible de la commande traite la commande.

De nombreux contrôles fournissent une logique d'implémentation pour la plupart des commandes dans la bibliothèque de commandes. Par exemple, la classe TextBox fournit la logique pour les commandes Paste, Cut, Copy, Undo et Redo. Pour plus d'informations, consultez la documentation de classe pour les classes de contrôle particulières.

Pour plus d'informations sur les commandes et leur exécution, voir Vue d'ensemble des commandes.

L'exemple suivant montre comment raccorder une RoutedCommand à un Control offrant une prise en charge intégrée de la commande. Pour un exemple complet de raccordement de commandes à plusieurs sources, consultez l'exemple Créer un RoutedCommand personnalisé, exemple.

Windows Presentation Foundation (WPF) propose une bibliothèque de commandes courantes que les programmeurs rencontrent régulièrement. Les classes qui constituent la bibliothèque de commandes sont les suivantes : ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands et EditingCommands.

Les objets RoutedCommand statiques qui composent ces classes ne fournissent pas de logique de commande. La logique de commande est associée à la commande à l'aide d'une CommandBinding. Certains contrôles possèdent des liaisons de commande intégrées pour certaines commandes. Ce mécanisme permet à la sémantique d'une commande de rester la même, alors que l'implémentation réelle peut changer. Par exemple, un contrôle TextBox gèrera la commande Paste d'une manière autre qu'un contrôle conçu pour prendre en charge des images. L'idée de base, à savoir coller quelque chose, reste toutefois la même. La logique de commande ne peut pas être fournie par la commande, mais doit l'être par le contrôle ou l'application.

De nombreux contrôles dans WPF offrent une prise en charge intégrée pour certaines commandes de la bibliothèque de commandes. Par exemple, TextBox prend en charge de nombreuses commandes de modification de l'application, telles que Paste, Copy, Cut, Redo et Undo. Le développeur d'applications ne doit rien faire de spécial pour que ces commandes fonctionnent avec ces contrôles. Si le contrôle TextBox est la cible de la commande lors de l'exécution de celle-ci, il gérera la commande à l'aide de la CommandBinding qui lui est intégrée.

L'exemple suivant montre comment utiliser un MenuItem en tant que source de la commande Paste, dont le contrôle TextBox est la cible. Toute la logique qui définit la manière dont le contrôle TextBox effectue le collage est intégrée à celui-ci.

Un MenuItem est créé et sa propriété Command prend pour valeur la commande Paste. L'objet TextBox n'est pas explicitement affecté à la CommandTarget. Lorsque la CommandTarget n'est pas définie, la cible est l'élément qui a le focus clavier. Si l'élément qui a le focus clavier ne prend pas en charge la commande Paste ou ne peut pas exécuter la commande de collage pour l'instant (parce que le presse-papiers est vide, par exemple), alors MenuItem apparaît en grisé.

<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);
}


Davantage de code

Comment : raccorder une commande à un contrôle sans prise en charge de commandeL'exemple suivant montre comment raccorder une RoutedCommand à un Control qui n'offre pas de prise en charge intégrée de la commande. Pour un exemple complet de raccordement de commandes à plusieurs sources, consultez l'exemple Créer un RoutedCommand personnalisé, exemple.

System.Object
  System.Windows.Input.ComponentCommands

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft