Partager via


RoutedCommand.CanExecute(Object, IInputElement) Méthode

Définition

Détermine si ce RoutedCommand peut s'exécuter dans son état actuel.

public:
 bool CanExecute(System::Object ^ parameter, System::Windows::IInputElement ^ target);
[System.Security.SecurityCritical]
public bool CanExecute (object parameter, System.Windows.IInputElement target);
public bool CanExecute (object parameter, System.Windows.IInputElement target);
[<System.Security.SecurityCritical>]
member this.CanExecute : obj * System.Windows.IInputElement -> bool
member this.CanExecute : obj * System.Windows.IInputElement -> bool
Public Function CanExecute (parameter As Object, target As IInputElement) As Boolean

Paramètres

parameter
Object

Type de données défini par l'utilisateur.

target
IInputElement

Cible de la commande.

Retours

true si la commande peut s'exécuter sur la cible de commande actuelle ; sinon false.

Attributs

Exceptions

Exemples

L’exemple suivant est un gestionnaire d’événements CanExecuteChanged à partir d’une implémentation personnalisée de ICommandSource.

this.Command dans cet exemple est la Command propriété sur le ICommandSource. Si la commande n’est pas null, la commande est castée en .RoutedCommand Si la commande est un RoutedCommand, la CanExecute méthode est appelée en passant le CommandTarget et le CommandParameter. Si la commande n’est pas un RoutedCommand, elle est castée en et ICommand la CanExecute méthode est appelée en passant le CommandParameter.

Si la CanExecute méthode retourne true, le contrôle est activé ; sinon, le contrôle est désactivé.

private void CanExecuteChanged(object sender, EventArgs e)
{

    if (this.Command != null)
    {
        RoutedCommand command = this.Command as RoutedCommand;

        // If a RoutedCommand.
        if (command != null)
        {
            if (command.CanExecute(CommandParameter, CommandTarget))
            {
                this.IsEnabled = true;
            }
            else
            {
                this.IsEnabled = false;
            }
        }
        // If a not RoutedCommand.
        else
        {
            if (Command.CanExecute(CommandParameter))
            {
                this.IsEnabled = true;
            }
            else
            {
                this.IsEnabled = false;
            }
        }
    }
}
Private Sub CanExecuteChanged(ByVal sender As Object, ByVal e As EventArgs)

    If Me.Command IsNot Nothing Then
        Dim command As RoutedCommand = TryCast(Me.Command, RoutedCommand)

        ' If a RoutedCommand.
        If command IsNot Nothing Then
            If command.CanExecute(CommandParameter, CommandTarget) Then
                Me.IsEnabled = True
            Else
                Me.IsEnabled = False
            End If
            ' If a not RoutedCommand.
        Else
            If Me.Command.CanExecute(CommandParameter) Then
                Me.IsEnabled = True
            Else
                Me.IsEnabled = False
            End If
        End If
    End If
End Sub

Remarques

La logique réelle qui détermine si un RoutedCommand peut s’exécuter sur la cible de commande actuelle n’est pas contenue dans les CanExecute méthodes, mais déclenche plutôt CanExecute les PreviewCanExecute événements et qui tunnel et bulle dans l’arborescence d’éléments à la CanExecute recherche d’un objet avec un CommandBinding. Si un CommandBinding pour est RoutedCommand trouvé, le CanExecuteRoutedEventHandler joint à CommandBinding est appelé. Ces gestionnaires fournissent la logique de programmation pour déterminer si le peut s’exécuter RoutedCommand ou non.

Les PreviewCanExecute événements et PreviewExecuted sont déclenchés sur .CommandTarget Si le CommandTarget n’est pas défini sur , ICommandSourceles PreviewCanExecute événements et CanExecute sont déclenchés sur l’élément avec le focus clavier.

S’applique à