Partager via


Comment : créer un RoutedCommand

Mise à jour : novembre 2007

Cet exemple montre comment créer une RoutedCommand personnalisée et l'implémenter en créant un ExecutedRoutedEventHandler et un CanExecuteRoutedEventHandler et en les joignant à une CommandBinding. Pour plus d'informations sur l'exécution des commandes, consultez Vue d'ensemble des commandes.

Exemple

La première étape de la création d'une RoutedCommand consiste à définir la commande et à l'instancier.

public static RoutedCommand CustomRoutedCommand = new RoutedCommand();

Pour utiliser la commande dans une application, vous devez créer les gestionnaires d'événements qui définissent le rôle de cette commande.

private void ExecutedCustomCommand(object sender,
    ExecutedRoutedEventArgs e)
{
    MessageBox.Show("Custom Command Executed");
}
// CanExecuteRoutedEventHandler that only returns true if
// the source is a control.
private void CanExecuteCustomCommand(object sender, 
    CanExecuteRoutedEventArgs e)
{
    Control target = e.Source as Control;

    if(target != null)
    {
        e.CanExecute = true;
    }
    else
    {
        e.CanExecute = false;
    }
}

Une CommandBinding associant la commande aux gestionnaires d'événements est ensuite créée. La CommandBinding est créée sur un objet spécifique. Cet objet définit la portée de la CommandBinding dans l'arborescence d'éléments

<Window x:Class="SDKSamples.Window1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:SDKSamples"
    Height="600" Width="800"
    >
  <Window.CommandBindings>
    <CommandBinding Command="{x:Static custom:Window1.CustomRoutedCommand}"
                    Executed="ExecutedCustomCommand"
                    CanExecute="CanExecuteCustomCommand" />
  </Window.CommandBindings>
CommandBinding customCommandBinding = new CommandBinding(
    CustomRoutedCommand, ExecutedCustomCommand, CanExecuteCustomCommand);

// attach CommandBinding to root window
this.CommandBindings.Add(customCommandBinding);

La dernière étape consiste à appeler la commande. Pour ce faire, vous pouvez associer la commande à une ICommandSource, telle qu'un Button.

<StackPanel>
  <Button Command="{x:Static custom:Window1.CustomRoutedCommand}"
          Content="CustomRoutedCommand"/>
</StackPanel>
// create the ui
StackPanel CustomCommandStackPanel = new StackPanel();
Button CustomCommandButton = new Button();
CustomCommandStackPanel.Children.Add(CustomCommandButton);

CustomCommandButton.Command = CustomRoutedCommand;

Lorsque vous cliquez sur le bouton, la méthode Execute sur la RoutedCommand personnalisée est appelée. La RoutedCommand déclenche les événements routés PreviewExecuted et Executed. Ces événements parcourent l'arborescence d'éléments à la recherche d'une CommandBinding pour cette commande particulière. Si une CommandBinding est trouvée, le ExecutedRoutedEventHandler associé à cette CommandBinding est appelé.

Voir aussi

Concepts

Vue d'ensemble des commandes

Référence

RoutedCommand