RoutedCommand.CanExecuteChanged Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje, gdy zmiany w źródle poleceń są wykrywane przez menedżera poleceń. Te zmiany często mają wpływ na to, czy polecenie powinno zostać wykonane w bieżącym obiekcie docelowym polecenia.
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
Typ zdarzenia
Implementuje
Przykłady
Poniższy przykład to CanExecuteChanged procedura obsługi zdarzeń z niestandardowej implementacji programu ICommandSource.
this.Command
w tym przykładzie Command jest to właściwość w obiekcie ICommandSource. Jeśli polecenie nie null
ma wartości , polecenie zostanie oddane do .RoutedCommand Jeśli polecenie jest poleceniem RoutedCommand, CanExecute metoda jest wywoływana, przekazując element CommandTarget i CommandParameter. Jeśli polecenie nie jest elementem RoutedCommand, jest rzutowanie do elementu ICommand , a CanExecute metoda jest wywoływana przekazując element CommandParameter.
CanExecute Jeśli metoda zwróci true
wartość , kontrolka jest włączona. W przeciwnym razie kontrolka jest wyłączona.
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
Uwagi
Nasłuchuje RoutedCommandRequerySuggested zdarzenia, które jest wywoływane przez element CommandManager. Zdarzenie RequerySuggested jest wywoływane za każdym razem, gdy zostaną spełnione warunki, które mogą zmienić, czy polecenie powinno zostać wykonane, na przykład zmiana fokusu klawiatury. Gdy polecenie odbiera RequerySuggested zdarzenie, zgłasza CanExecuteChanged zdarzenie. Ogólnie rzecz biorąc, źródło polecenia będzie nasłuchiwać tego zdarzenia i wykonywać zapytania RoutedCommand za pomocą CanExecute metody . Większość źródeł poleceń wyłączy się, jeśli nie można wykonać polecenia w ramach powiązania polecenia. Przykładem jest to, że gdy MenuItem polecenie nie może zostać wykonane, zostanie wyszarane.
W niektórych sytuacjach nie wiadomo o CommandManager zmianie warunków, które zmieniają możliwość wykonywania polecenia. W takich przypadkach można wymusić CommandManager wywołanie RequerySuggested zdarzenia przez wywołanie InvalidateRequerySuggested metody . Spowoduje RoutedCommandCanExecuteChanged to wystąpienie zdarzenia.