RoutedCommand.CanExecuteChanged Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Terjadi ketika perubahan pada sumber perintah terdeteksi oleh manajer perintah. Perubahan ini sering memengaruhi apakah perintah harus dijalankan pada target perintah saat ini.
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
Jenis Acara
Penerapan
Contoh
Contoh berikut adalah CanExecuteChanged penanganan aktivitas dari implementasi ICommandSourcekustom .
this.Command
dalam contoh ini adalah Command properti pada ICommandSource. Jika perintahnya bukan null
, perintah akan dilemparkan ke RoutedCommand. Jika perintah adalah RoutedCommand, maka CanExecute metode ini disebut melewati CommandTarget dan CommandParameter. Jika perintah bukan RoutedCommand, perintah ditransmisikan ke dan ICommandCanExecute metode disebut meneruskan 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
mendengarkan RoutedCommand acara, yang dibesarkan RequerySuggested oleh CommandManager. Peristiwa RequerySuggested dinaikkan setiap kali kondisi terpenuhi yang dapat mengubah apakah perintah harus dijalankan, seperti perubahan fokus keyboard. Saat perintah menerima RequerySuggested peristiwa, perintah akan memunculkan CanExecuteChanged peristiwa. Umumnya, sumber perintah akan mendengarkan peristiwa ini dan mengkueri RoutedCommand dengan cara CanExecute metode . Sebagian besar sumber perintah akan menonaktifkan diri mereka sendiri jika perintah tidak dapat dijalankan, sebagai bagian dari pengikatan perintah mereka. Contohnya adalah ketika MenuItem abu-abu itu sendiri ketika perintah tidak dapat dijalankan.
Dalam beberapa situasi, CommandManager tidak menyadari perubahan kondisi yang mengubah kemampuan perintah untuk dijalankan. Dalam kasus ini, Anda dapat memaksa CommandManager untuk menaikkan RequerySuggested peristiwa dengan memanggil InvalidateRequerySuggested metode , ini pada gilirannya RoutedCommand akan menyebabkan peningkatan CanExecuteChanged peristiwa.