RoutedCommand.CanExecuteChanged Esemény

Definíció

Akkor fordul elő, ha a parancskezelő észleli a parancsforrás módosításait. Ezek a módosítások gyakran befolyásolják, hogy a parancsnak végre kell-e hajtania az aktuális parancscélt.

public:
 virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler 
Public Custom Event CanExecuteChanged As EventHandler 

Eseménytípus

Megvalósítás

Példák

Az alábbi példa egy CanExecuteChanged eseménykezelő, amely egy egyéni implementációból származik ICommandSource.

this.Command ebben a példában a Command tulajdonság a ICommandSource. Ha a parancs nem null, a parancsot a rendszer egy RoutedCommand. Ha a parancs egy RoutedCommand, akkor a CanExecute metódust a rendszer az és a CommandTargetCommandParameterparancs átadásának hívja. Ha a parancs nem egy RoutedCommand, akkor a rendszer egy ICommand parancsra irányítja át, és a CanExecute metódus neve a következő lesz: passing the CommandParameter.

Ha a CanExecute metódus visszatér true, akkor a vezérlőelem engedélyezve van, ellenkező esetben a vezérlő le van tiltva.

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

Megjegyzések

A RoutedCommand figyeli az RequerySuggested eseményt, amelyet a CommandManager. Az RequerySuggested esemény akkor jön létre, amikor teljesülnek azok a feltételek, amelyek megváltoztathatják a parancs végrehajtását, például a billentyűzet fókuszának módosítását. Amikor a parancs megkapja az RequerySuggested eseményt, az eseményt emeli CanExecuteChanged ki. A parancsforrás általában figyeli ezt az eseményt, és lekérdezi a RoutedCommandCanExecute metódust. A legtöbb parancsforrás letiltja magát, ha a parancs nem hajtható végre a parancskötés részeként. Erre példa az, amikor egy MenuItem szürkén jelenik meg, amikor a parancs nem hajtható végre.

Bizonyos helyzetekben a CommandManager rendszer nem tud olyan változásokról, amelyek megváltoztatják a parancsok végrehajtási képességét. Ezekben az esetekben a metódus meghívásával kényszerítheti az CommandManager esemény emelésétRequerySuggested, ez pedig az InvalidateRequerySuggested esemény emelését RoutedCommand eredményezi.CanExecuteChanged

A következőre érvényes: