RoutedCommand.CanExecuteChanged Gebeurtenis
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.
Treedt op wanneer wijzigingen in de opdrachtbron worden gedetecteerd door de opdrachtbeheer. Deze wijzigingen zijn vaak van invloed op het feit of de opdracht moet worden uitgevoerd op het huidige opdrachtdoel.
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
Gebeurtenistype
Implementeringen
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 wordt geretourneerd true, wordt het besturingselement ingeschakeld. Anders is 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 RoutedCommand luistert naar de RequerySuggested gebeurtenis, die door de CommandManager. De RequerySuggested gebeurtenis wordt gegenereerd wanneer aan voorwaarden wordt voldaan die de vraag kunnen wijzigen of de opdracht moet worden uitgevoerd, zoals een wijziging in de toetsenbordfocus. Wanneer de opdracht de RequerySuggested gebeurtenis ontvangt, wordt de CanExecuteChanged gebeurtenis gegenereerd. Over het algemeen luistert de opdrachtbron naar deze gebeurtenis en voert de query RoutedCommand uit via de CanExecute methode. De meeste opdrachtbronnen schakelen zichzelf uit als de opdracht niet kan worden uitgevoerd, als onderdeel van de opdrachtbinding. Een voorbeeld hiervan is wanneer een MenuItem grijs wordt weergegeven wanneer de opdracht niet kan worden uitgevoerd.
In sommige situaties is het CommandManager niet bekend dat een wijziging in voorwaarden die de mogelijkheid van een opdracht wijzigen om uit te voeren. In deze gevallen kunt u afdwingen dat de CommandManager gebeurtenis wordt RequerySuggested gegenereerd door de InvalidateRequerySuggested methode aan te roepen. Hierdoor wordt de RoutedCommandCanExecuteChanged gebeurtenis vervolgens gegenereerd.