RoutedCommand.CanExecuteChanged Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Komut kaynağında yapılan değişiklikler komut yöneticisi tarafından algılandığında gerçekleşir. Bu değişiklikler genellikle komutun geçerli komut hedefinde yürütülip yürütülmeyeceğini etkiler.
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
Olay Türü
Uygulamalar
Örnekler
Aşağıdaki örnek, özel uygulamasından CanExecuteChanged bir olay işleyicisidir ICommandSource.
this.Command
bu örnekte, üzerindeki özelliğidir CommandICommandSource. Komut değilse null
, komutu öğesine RoutedCommandyayınlanır. Komut bir RoutedCommandCanExecute ise ve değerini geçirmek CommandTarget için yöntemi çağrılırCommandParameter. Komut bir RoutedCommanddeğilse, öğesine yayınlanır ICommand ve CanExecute yöntemi geçirilirken çağrılır CommandParameter.
CanExecute yöntem döndürürse true
denetim etkinleştirilir; aksi takdirde denetim devre dışı bırakılır.
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
Açıklamalar
, RoutedCommand tarafından CommandManageroluşturulan olayı dinlerRequerySuggested. Olay RequerySuggested , klavye odağındaki bir değişiklik gibi komutun yürütülip yürütülmeyeceğini değiştirebilecek koşullar karşılandığında tetiklenir. Komut olayı aldığında RequerySuggested olayı tetikler CanExecuteChanged . Genellikle, komut kaynağı bu olayı dinler ve yöntemini kullanarak sorgular RoutedCommandCanExecute . Komutun yürütülememesi durumunda komut kaynaklarının çoğu, komut bağlamalarının bir parçası olarak kendilerini devre dışı bırakır. Buna örnek olarak, komut yürütülemediğinde bir MenuItem gri görüntülenir.
Bazı durumlarda, CommandManager bir komutun yürütülme yeteneğini değiştiren koşullardaki bir değişikliğin farkında değildir. Bu gibi durumlarda yöntemini çağırarak InvalidateRequerySuggested öğesini olayı tetiklemeye RequerySuggested zorlayabilirsinizCommandManager, bu da olayının tetiklesine RoutedCommandCanExecuteChanged neden olur.