Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
L’exemple suivant montre comment raccorder un RoutedCommand à un Control qui n’a pas de prise en charge intégrée de la commande. Pour obtenir un exemple complet qui connecte des commandes à plusieurs sources, consultez l’exemple Créer un exemple RoutedCommand personnalisé .
Exemple :
Windows Presentation Foundation (WPF) fournit une bibliothèque de commandes courantes que les programmeurs d’applications rencontrent régulièrement. Les classes qui composent la bibliothèque de commandes sont : ApplicationCommands, , ComponentCommandsNavigationCommands, MediaCommands, et EditingCommands.
Les objets statiques RoutedCommand qui composent ces classes ne fournissent pas de logique de commande. La logique de la commande est associée à la commande avec un CommandBinding. De nombreux contrôles dans WPF prennent en charge certaines des commandes de la bibliothèque de commandes. TextBox, par exemple, prend en charge la plupart des commandes de modification d’application telles que Paste, , CopyCut, , Redo, et Undo. Le développeur d’applications n’a pas besoin de faire quelque chose de spécial pour obtenir ces commandes pour travailler avec ces contrôles. TextBox S’il s’agit de la cible de commande lorsque la commande est exécutée, elle gère la commande à l’aide de l’élément CommandBinding intégré au contrôle.
L’exemple suivant montre comment utiliser une Button source de commande pour la Open commande. Un CommandBinding est créé, qui associe le CanExecuteRoutedEventHandler spécifié et le CanExecuteRoutedEventHandler au RoutedCommand.
Tout d’abord, la source de commande est créée. A Button est utilisé comme source de commande.
<Button Command="ApplicationCommands.Open" Name="MyButton"
Height="50" Width="200">
Open (KeyBindings: Ctrl+R, Ctrl+0)
</Button>
// Button used to invoke the command
Button CommandButton = new Button();
CommandButton.Command = ApplicationCommands.Open;
CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)";
MainStackPanel.Children.Add(CommandButton);
' Button used to invoke the command
Dim CommandButton As New Button()
CommandButton.Command = ApplicationCommands.Open
CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)"
MainStackPanel.Children.Add(CommandButton)
Ensuite, les ExecutedRoutedEventHandler et les CanExecuteRoutedEventHandler fichiers sont créés. Le ExecutedRoutedEventHandler s’ouvre simplement pour MessageBox signifier que la commande a été exécutée. Le CanExecuteRoutedEventHandler définit la propriété CanExecute à true. Normalement, le gestionnaire peut exécuter des vérifications plus robustes pour voir si la commande peut s’exécuter sur la cible de commande actuelle.
void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e)
{
String command, targetobj;
command = ((RoutedCommand)e.Command).Name;
targetobj = ((FrameworkElement)target).Name;
MessageBox.Show("The " + command + " command has been invoked on target object " + targetobj);
}
void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
Private Sub OpenCmdExecuted(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
Dim command, targetobj As String
command = CType(e.Command, RoutedCommand).Name
targetobj = CType(sender, FrameworkElement).Name
MessageBox.Show("The " + command + " command has been invoked on target object " + targetobj)
End Sub
Private Sub OpenCmdCanExecute(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
e.CanExecute = True
End Sub
Enfin, un CommandBinding est créé à la racine Window de l’application, et il associe les gestionnaires d’événements routés à la Open commande.
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Open"
Executed="OpenCmdExecuted"
CanExecute="OpenCmdCanExecute"/>
</Window.CommandBindings>
// Creating CommandBinding and attaching an Executed and CanExecute handler
CommandBinding OpenCmdBinding = new CommandBinding(
ApplicationCommands.Open,
OpenCmdExecuted,
OpenCmdCanExecute);
this.CommandBindings.Add(OpenCmdBinding);
' Creating CommandBinding and attaching an Executed and CanExecute handler
Dim OpenCmdBinding As New CommandBinding(ApplicationCommands.Open, AddressOf OpenCmdExecuted, AddressOf OpenCmdCanExecute)
Me.CommandBindings.Add(OpenCmdBinding)
Voir aussi
- Vue d’ensemble des commandes
- Lier une commande à un contrôle avec support de commande
.NET Desktop feedback