RoutedCommand.CanExecute(Object, IInputElement) Metoda
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í.
Určuje, zda se může RoutedCommand provést v aktuálním stavu.
public:
bool CanExecute(System::Object ^ parameter, System::Windows::IInputElement ^ target);
[System.Security.SecurityCritical]
public bool CanExecute (object parameter, System.Windows.IInputElement target);
public bool CanExecute (object parameter, System.Windows.IInputElement target);
[<System.Security.SecurityCritical>]
member this.CanExecute : obj * System.Windows.IInputElement -> bool
member this.CanExecute : obj * System.Windows.IInputElement -> bool
Public Function CanExecute (parameter As Object, target As IInputElement) As Boolean
Parametry
- parameter
- Object
Datový typ definovaný uživatelem.
- target
- IInputElement
Cíl příkazu.
Návraty
true
Pokud příkaz lze provést na aktuální cíl příkazu; v opačném případě . false
- Atributy
Výjimky
target
není nebo UIElementContentElement.
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ázán.
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
Skutečná logika, která určuje, zda RoutedCommand lze provést v aktuálním cílovém příkazu, není obsažena v CanExecute metodách, spíše CanExecute vyvolává a CanExecute události, které tunelují PreviewCanExecute a bubliny ve stromu prvků hledají objekt s CommandBinding. Pokud je nalezena CommandBinding hodnota pro RoutedCommand , pak CanExecuteRoutedEventHandler je volána přidružená k CommandBinding . Tyto obslužné rutiny poskytují logiku programování pro určení, zda RoutedCommand lze provést nebo ne.
Události PreviewCanExecute a PreviewExecuted jsou vyvolány na CommandTarget. CommandTarget Pokud není nastavena na ICommandSource, PreviewCanExecute události a CanExecute jsou vyvolány u prvku s fokusem klávesnice.