.NET Framework-Klassenbibliothek
RoutedCommand..::.CanExecute-Methode

Aktualisiert: November 2007

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

Namespace:  System.Windows.Input
Assembly:  PresentationCore (in PresentationCore.dll)
Syntax

Visual Basic (Deklaration)
Public Function CanExecute ( _
    parameter As Object, _
    target As IInputElement _
) As Boolean
Visual Basic (Verwendung)
Dim instance As RoutedCommand
Dim parameter As Object
Dim target As IInputElement
Dim returnValue As Boolean

returnValue = instance.CanExecute(parameter, _
    target)
C#
public bool CanExecute(
    Object parameter,
    IInputElement target
)
VisualC++
public:
bool CanExecute(
    Object^ parameter, 
    IInputElement^ target
)
J#
public boolean CanExecute(
    Object parameter,
    IInputElement target
)
Jscript
public function CanExecute(
    parameter : Object, 
    target : IInputElement
) : boolean
XAML
Sie können diese Methoden nicht in XAML verwenden.

Parameter

parameter
Typ: System..::.Object
Ein benutzerdefinierter Datentyp.
target
Typ: System.Windows..::.IInputElement
Das Ziel des Befehls.

Rückgabewert

Typ: System..::.Boolean
true, wenn der Befehl für das aktuelle Befehlsziel ausgeführt werden kann, andernfalls false.
Ausnahmen

AusnahmeBedingung
InvalidOperationException

target ist kein UIElement und kein ContentElement.

Hinweise

Die eigentliche Logik, die ermittelt, ob ein RoutedCommand für das aktuelle Befehlsziel ausgeführt werden kann, ist nicht in den CanExecute-Methoden enthalten. Stattdessen löst CanExecute das PreviewCanExecute-Ereignis und das CanExecute-Ereignis aus, die die Elementstruktur abwärts oder aufwärts durchlaufen und ein Objekt mit einer CommandBinding suchen. Wenn ein CommandBinding für den RoutedCommand gefunden wird, dann wird der an CommandBinding angefügte CanExecuteRoutedEventHandler aufgerufen. Diese Handler stellen die Programmierlogik bereit, mit der ermittelt wird, ob der RoutedCommand ausgeführt werden kann.

Das PreviewCanExecute-Ereignis und PreviewExecuted-Ereignis werden für das CommandTarget ausgelöst. Wenn CommandTarget für die ICommandSource nicht festgelegt ist, werden das PreviewCanExecute-Ereignis und das CanExecute-Ereignis für das Element mit Tastaturfokus ausgelöst.

Beispiele

Im folgenden Beispiel wird ein CanExecuteChanged-Ereignishandler aus einer benutzerdefinierten Implementierung von ICommandSource dargestellt. Im vollständigen Beispiel wird die Slider-Klasse in Unterklassen unterteilt und ICommandSource wird implementiert, um einen Schieberegler zu erstellen, der einen Befehl aufruft, wenn die Werteigenschaft geändert wird. Das vollständige Beispiel finden Sie unter Beispiel für das Implementieren von "ICommandSource".

In diesem Beispiel stellt this.Command die Command-Eigenschaft für die ICommandSource dar. Wenn der Befehl nicht nullNothingnullptrNULL-Verweis (Nothing in Visual Basic) ist, wird der Befehl in einen RoutedCommand umgewandelt. Wenn es sich um einen RoutedCommand-Befehl handelt, wird die CanExecute-Methode aufgerufen und CommandTarget und CommandParameter werden übergeben. Wenn es sich nicht um einen RoutedCommand-Befehl handelt, wird der Befehl in einen ICommand umgewandelt. Außerdem wird die CanExecute-Methode aufgerufen, und der CommandParameter wird übergeben.

Wenn die CanExecute-Methode true zurückgibt, ist das Steuerelement aktiviert.

C#
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;
            }
        }
    }
}
Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen

.NET Framework

Unterstützt in: 3.5, 3.0
Siehe auch

Referenz

Weitere Ressourcen

Tags :


Page view tracker