RoutedCommand.CanExecute(Object, IInputElement) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
target is geen UIElement of ContentElement.
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.