RoutedCommand.CanExecute(Object, IInputElement) Methode

Definition

Ermittelt, ob dieser RoutedCommand im aktuellen Zustand ausgeführt werden kann.

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

Parameter

parameter
Object

Ein benutzerdefinierter Datentyp.

target
IInputElement

Das Ziel des Befehls.

Gibt zurück

Boolean

true, wenn der Befehl für das aktuelle Befehlsziel ausgeführt werden kann, andernfalls false.

Attribute

Ausnahmen

Beispiele

Im folgenden Beispiel handelt es sich um einen CanExecuteChanged Ereignishandler aus einer benutzerdefinierten Implementierung von ICommandSource.

this.Command in diesem Beispiel ist die Command Eigenschaft auf dem ICommandSource. Wenn der Befehl nicht nullist, wird der Befehl in ein RoutedCommand. Wenn der Befehl ein RoutedCommandist , wird die CanExecute Methode aufgerufen, die übergeben CommandTarget und die CommandParameter. Wenn der Befehl nicht ein RoutedCommandist, wird es an eine ICommand übergeben und die CanExecute Methode wird aufgerufen CommandParameter.

Wenn die CanExecute Methode zurückgegeben truewird, wird das Steuerelement aktiviert. Andernfalls wird das Steuerelement deaktiviert.

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

Hinweise

Die tatsächliche Logik, die bestimmt, ob eine RoutedCommand Ausführung auf dem aktuellen Befehlsziel nicht in den CanExecute Methoden enthalten ist, CanExecute sondern PreviewCanExecute CanExecute die Ereignisse, die tunneln und blasen durch Elementstruktur nach einem Objekt mit einer CommandBinding. Wenn eine CommandBinding für dies RoutedCommand gefunden wird, wird der CanExecuteRoutedEventHandler angefügte CommandBinding Aufruf aufgerufen. Diese Handler liefern die Programmierlogik, um festzustellen, ob die RoutedCommand Ausführung ausgeführt werden kann oder nicht.

Die PreviewCanExecute Ereignisse PreviewExecuted werden auf dem CommandTarget. Wenn dies CommandTarget nicht auf dem ICommandSourceElement festgelegt ist, werden die PreviewCanExecute Ereignisse CanExecute auf dem Element mit Tastaturfokus ausgelöst.

Gilt für: