RoutedCommand.CanExecute(Object, IInputElement) Yöntem
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.
Bunun RoutedCommand geçerli durumunda yürütülip yürütülemeyeceğini belirler.
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
Parametreler
- parameter
- Object
Kullanıcı tanımlı veri türü.
- target
- IInputElement
Komut hedefi.
Döndürülenler
true
komutu geçerli komut hedefinde yürütülebiliyorsa; aksi takdirde , false
.
- Öznitelikler
Özel durumlar
target
veya ContentElementdeğildirUIElement.
Ö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 bir RoutedCommandöğesine yayınlanır. Komut bir RoutedCommandise, ve geçirilirken CanExecuteCommandTarget yöntemi çağrılır CommandParameter. Komut bir RoutedCommanddeğilse, öğesine yayınlanır ICommand ve CanExecute yöntemi geçirilirken çağrılır CommandParameter.
CanExecute yöntemi 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
geçerli komut hedefinde yürütülebilir RoutedCommand olup olmadığını belirleyen gerçek mantık yöntemlerde CanExecute yer almadığından, CanExecute öğesini içeren bir nesneyi CommandBindingarayan öğe ağacından tünel ve kabarcık oluşturan ve CanExecute olaylarını tetiklerPreviewCanExecute. Bunun RoutedCommand için bir CommandBinding bulunursa, CanExecuteRoutedEventHandler iliştirilen CommandBinding çağrılır. Bu işleyiciler yürütebilir olup olmadığını RoutedCommand belirlemek için programlama mantığını sağlar.
PreviewCanExecute ve PreviewExecuted olayları üzerinde CommandTargetoluşturulur. CommandTarget öğesinde PreviewCanExecuteICommandSourceayarlanmadıysa ve CanExecute olayları klavye odağıyla öğesinde tetiklenir.