Bagikan melalui


RoutedCommand.CanExecute(Object, IInputElement) Metode

Definisi

Menentukan apakah ini RoutedCommand dapat dijalankan dalam statusnya saat ini.

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

Parameter

parameter
Object

Jenis data yang ditentukan pengguna.

target
IInputElement

Target perintah.

Mengembalikan

true jika perintah dapat dijalankan pada target perintah saat ini; jika tidak, false.

Atribut

Pengecualian

Contoh

Contoh berikut adalah CanExecuteChanged penanganan aktivitas dari implementasi ICommandSourcekustom .

this.Command dalam contoh ini adalah Command properti pada ICommandSource. Jika perintah bukan null, perintah akan ditransmisian ke RoutedCommand. Jika perintah adalah RoutedCommand, maka CanExecute metode ini disebut melewati CommandTarget dan CommandParameter. Jika perintah bukan RoutedCommand, perintah ditransmisikan ke ICommand dan CanExecute metode ini disebut melewati CommandParameter.

CanExecute Jika metode mengembalikan true, maka kontrol diaktifkan; jika tidak, kontrol dinonaktifkan.

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

Keterangan

Logika aktual yang menentukan apakah RoutedCommand dapat dijalankan pada target perintah saat ini tidak terkandung dalam CanExecute metode , melainkan CanExecute menaikkan PreviewCanExecute dan CanExecute peristiwa yang terowongan dan gelembung melalui pohon elemen mencari objek dengan CommandBinding. CommandBinding Jika untuk itu RoutedCommand ditemukan, maka yang CanExecuteRoutedEventHandler terlampir CommandBinding dipanggil. Penangan ini menyediakan logika pemrograman untuk menentukan apakah RoutedCommand dapat dijalankan atau tidak.

Peristiwa PreviewCanExecute dan PreviewExecuted diangkat pada CommandTarget. CommandTarget Jika tidak diatur pada ICommandSource, PreviewCanExecute peristiwa dan CanExecute dinaikkan pada elemen dengan fokus keyboard.

Berlaku untuk