RoutedCommand.CanExecute(Object, IInputElement) Metode
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.
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
target
bukan UIElement atau ContentElement.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk