Aracılığıyla paylaş


RoutedCommand.CanExecute(Object, IInputElement) Yöntem

Tanım

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

Ö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 truedenetim 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.

Şunlara uygulanır