RoutedCommand.CanExecuteChanged Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyvolá se při zjištění změn ve zdroji příkazů správcem příkazů. Tyto změny často ovlivňují, jestli se má příkaz spustit v aktuálním cíli příkazu.
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
Event Type
Implementuje
Příklady
Následující příklad je obslužná rutina CanExecuteChanged události z vlastní implementace .ICommandSource
this.Command
v tomto příkladu Command je vlastnost v objektu ICommandSource. Pokud příkaz není null
, je příkaz přetypován na RoutedCommand. Pokud je příkaz , RoutedCommandvolá se CanExecute metoda předávání a CommandTargetCommandParameter. Pokud příkaz není RoutedCommand, přetypuje se na a ICommandCanExecute metoda se nazývá předání .CommandParameter
CanExecute Pokud metoda vrátí true
, je ovládací prvek povolený. V opačném případě je ovládací prvek zakázaný.
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
Poznámky
RequerySuggested Naslouchá RoutedCommand události, která je vyvolána CommandManager. Událost RequerySuggested se vyvolá vždy, když jsou splněny podmínky, které mohou změnit, zda se má příkaz spustit, například změna fokusu klávesnice. Když příkaz přijme RequerySuggested událost, vyvolá událost CanExecuteChanged . Obecně platí, že zdroj příkazu bude této události naslouchat a dotazovat RoutedCommand se pomocí CanExecute metody . Většina zdrojů příkazů se zakáže, pokud příkaz nelze spustit, jako součást vazby příkazu. Příkladem je, když se objekt MenuItem zobrazí šedě, když příkaz nelze spustit.
V některých situacích si není vědom CommandManager změny podmínek, které mění schopnost příkazu provést. V těchto případech můžete vynutit CommandManagerRequerySuggested vyvolání události voláním InvalidateRequerySuggested metody , což způsobí RoutedCommandCanExecuteChanged vyvolání události.