Exporter (0) Imprimer
Développer tout

CommandBinding, classe

Mise à jour : novembre 2007

Lie un RoutedCommand aux gestionnaires d'événements qui implémentent la commande.

Espace de noms :  System.Windows.Input
Assembly :  PresentationCore (dans PresentationCore.dll)
XMLNS pour XAML : http://schemas.microsoft.com/winfx/xaml/presentation

public class CommandBinding
public class CommandBinding
public class CommandBinding

Un CommandBinding associe une commande aux événements PreviewExecuted/Executed et PreviewCanExecute/CanExecute qui implémentent et déterminent l'état de la commande.

Lorsque la méthode Execute ou CanExecute d'un RoutedCommand est appelée, les événements PreviewExecuted/Executed ou PreviewCanExecute/CanExecute sont déclenchés sur la cible de la commande. Si la cible de la commande possède un CommandBinding pour la commande, les gestionnaires appropriés sont appelés. Si la cible de la commande ne possède pas de CommandBinding pour la commande, les événements sont routés via l'arborescence d'éléments jusqu'à ce qu'un élément possédant un CommandBinding soit trouvé.

L'utilisation d'un CommandBinding est limitée avec une interface ICommand qui n'est pas de type CommandBinding. Cela tient au fait que CommandBinding lie la commande au ExecutedRoutedEventHandler et au CanExecuteRoutedEventHandler qui écoutent les événements routés Executed et CanExecute qui sont déclenchés lorsque les méthodes Execute et CanExecute du RoutedCommand sont appelées.

L'exemple suivant indique comment utiliser l'exécution de commandes dans Windows Presentation Foundation (WPF). L'exemple montre comment associer une RoutedCommand à un Button, créer une CommandBinding et créer les gestionnaires d'événements qui implémentent la RoutedCommand. Pour plus d'informations sur l'exécution des commandes, consultez Vue d'ensemble des commandes.

La première section du code crée l'interface utilisateur (UI), qui se compose d'un Button et d'un StackPanel, et crée une CommandBinding qui associe les gestionnaires de commandes à la RoutedCommand.

La propriété Command du Button est associée à la commande Close.

La CommandBinding est ajoutée à la CommandBindingCollection de la Window racine. Les gestionnaires d'événements Executed et CanExecute sont attachés à cette liaison et associés à la commande Close.

Sans la CommandBinding, il n'y a aucune commande logique, uniquement un mécanisme pour appeler la commande. Lorsque l'utilisateur clique sur le Button, l'RoutedEvent PreviewExecuted est déclenché sur la cible de la commande suivie par l'RoutedEvent Executed. Ces événements parcourent l'arborescence d'éléments à la recherche d'une CommandBinding pour cette commande particulière. Il convient de noter que comme l'RoutedEvent effectue un tunneling et se propage à travers l'arborescence d'éléments, vous devez prêter une attention particulière à l'endroit où la CommandBinding est placée. Si la CommandBinding se trouve sur un frère de la cible de commande ou un autre nœud qui n'est pas sur l'itinéraire du RoutedEvent, la CommandBinding sera inaccessible.

<Window x:Class="WCSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="CloseCommand"
    Name="RootWindow"
    >
  <Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close"
                    Executed="CloseCommandHandler"
                    CanExecute="CanExecuteHandler"
                    />
  </Window.CommandBindings>
  <StackPanel Name="MainStackPanel">
    <Button Command="ApplicationCommands.Close" 
            Content="Close File" />
  </StackPanel>
</Window>


// Create ui elements.
StackPanel CloseCmdStackPanel = new StackPanel();
Button CloseCmdButton = new Button();
CloseCmdStackPanel.Children.Add(CloseCmdButton);

// Set Button's properties.
CloseCmdButton.Content = "Close File";
CloseCmdButton.Command = ApplicationCommands.Close;

// Create the CommandBinding.
CommandBinding CloseCommandBinding = new CommandBinding(
    ApplicationCommands.Close, CloseCommandHandler, CanExecuteHandler);

// Add the CommandBinding to the root Window.
RootWindow.CommandBindings.Add(CloseCommandBinding);


La section suivante du code implémente les gestionnaires d'événements Executed et CanExecute.

Le gestionnaire Executed appelle une méthode pour fermer le fichier ouvert. Le gestionnaire CanExecute appelle une méthode pour déterminer si un fichier est ouvert. Si un fichier est ouvert, CanExecute a la valeur true ; sinon, il a la valeur false.

// Executed event handler.
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    // Calls a method to close the file and release resources.
    CloseFile();
}

// CanExecute event handler.
private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e)
{
    // Call a method to determine if there is a file open.
    // If there is a file open, then set CanExecute to true.
    if (IsFileOpened())
    {
        e.CanExecute = true;
    }
    // if there is not a file open, then set CanExecute to false.
    else
    {
        e.CanExecute = false;
    }
}


System.Object
  System.Windows.Input.CommandBinding

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:
© 2014 Microsoft