RoutedCommand.CanExecute(Object, IInputElement) Methode

Definitie

Bepaalt of dit RoutedCommand kan worden uitgevoerd in de huidige status.

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

Parameters

parameter
Object

Een door de gebruiker gedefinieerd gegevenstype.

target
IInputElement

Het opdrachtdoel.

Retouren

true als de opdracht kan worden uitgevoerd op het huidige opdrachtdoel; anders, false.

Kenmerken

Uitzonderingen

Voorbeelden

Het volgende voorbeeld is een CanExecuteChanged gebeurtenis-handler van een aangepaste implementatie van ICommandSource.

this.Command in dit voorbeeld is de Command eigenschap op de ICommandSource. Als de opdracht niet nullis, wordt de opdracht naar een RoutedCommand. Als de opdracht een RoutedCommandis, wordt de CanExecute methode het doorgeven van de CommandTarget en de CommandParameter. Als de opdracht geen RoutedCommandis, wordt deze naar een ICommand gecast en wordt de CanExecute methode het doorgeven van de CommandParametermethode genoemd.

Als de CanExecute methode retourneert true, wordt het besturingselement ingeschakeld. Anders wordt het besturingselement uitgeschakeld.

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

Opmerkingen

De werkelijke logica die bepaalt of een RoutedCommand uitvoering op het huidige opdrachtdoel niet is opgenomen in de CanExecute methoden, brengt de CanExecutePreviewCanExecute gebeurtenissen CanExecute die tunnelen en bellen door elementstructuur op zoek naar een object met een CommandBinding. Als een CommandBinding hiervoor RoutedCommand wordt gevonden, wordt de CanExecuteRoutedEventHandler bijlage aangeroepen CommandBinding . Deze handlers leveren de programmeerlogica om te bepalen of de RoutedCommand bewerking wel of niet kan worden uitgevoerd.

De PreviewCanExecute gebeurtenissen PreviewExecuted worden aan de orde gesteld op de CommandTarget. Als de CommandTarget functie niet is ingesteld op de ICommandSource, worden de PreviewCanExecute en CanExecute gebeurtenissen gegenereerd op het element met toetsenbordfocus.

Van toepassing op