RoutedCommand.CanExecute(Object, IInputElement) RoutedCommand.CanExecute(Object, IInputElement) RoutedCommand.CanExecute(Object, IInputElement) RoutedCommand.CanExecute(Object, IInputElement) Method

定義

現在の状態でこの RoutedCommand を実行できるかどうかを判断します。Determines whether this RoutedCommand can execute in its current state.

public:
 bool CanExecute(System::Object ^ parameter, System::Windows::IInputElement ^ target);
[System.Security.SecurityCritical]
public bool CanExecute (object parameter, System.Windows.IInputElement target);
member this.CanExecute : obj * System.Windows.IInputElement -> bool
Public Function CanExecute (parameter As Object, target As IInputElement) As Boolean

パラメーター

parameter
Object Object Object Object

ユーザー定義のデータ型。A user defined data type.

target
IInputElement IInputElement IInputElement IInputElement

コマンドの対象。The command target.

戻り値

現在のコマンドの対象に対してコマンドを実行できる場合は true。それ以外の場合は falsetrue if the command can execute on the current command target; otherwise, false.

例外

次の例は、 CanExecuteChangedICommandSourceカスタム実装のイベントハンドラーです。The following example is a CanExecuteChanged event handler from a custom implementation of ICommandSource.

this.Commandこの例ではCommand 、のICommandSourceプロパティはです。this.Command in this example is the Command property on the ICommandSource. コマンドがでないnull場合、コマンドはRoutedCommandにキャストされます。If the command is not null, the command is cast to a RoutedCommand. コマンドがRoutedCommandの場合、 CanExecute CommandTargetメソッドがCommandParameter呼び出され、とが渡されます。If the command is a RoutedCommand, then the CanExecute method is called passing the CommandTarget and the CommandParameter. RoutedCommandコマンドがでない場合は、 ICommandにキャストされ、 CanExecuteメソッドはを渡しCommandParameterて呼び出されます。If command is not a RoutedCommand, it is cast to an ICommand and the CanExecute method is called passing the CommandParameter.

メソッドがを返しtrueた場合は、コントロールが有効になります。それ以外の場合、コントロールは無効になります。 CanExecuteIf the CanExecute method returns true, then the control is enabled; otherwise, the control is disable.

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

注釈

現在のコマンドターゲットでRoutedCommandを実行できるかどうかを判断する実際のロジックは、 CanExecute PreviewCanExecuteメソッドCanExecute CanExecuteには含まれていませんツリーで、をCommandBinding持つオブジェクトを探しています。The actual logic that determines if a RoutedCommand can execute on the current command target is not contained in the CanExecute methods, rather CanExecute raises the PreviewCanExecute and the CanExecute events which tunnel and bubble through element tree looking for a object with a CommandBinding. のが見つかった場合CommandBindingは、にアタッチされたが呼び出されます。CanExecuteRoutedEventHandler RoutedCommand CommandBindingIf a CommandBinding for that RoutedCommand is found, then the CanExecuteRoutedEventHandler attached to CommandBinding is called. これらのハンドラーは、 RoutedCommandが実行できるかどうかを判断するためのプログラミングロジックを提供します。These handlers supply the programming logic for determining if the RoutedCommand can execute or not.

イベントとイベントPreviewExecutedがで発生します。CommandTarget PreviewCanExecuteThe PreviewCanExecute and PreviewExecuted events are raised on the CommandTarget. がに設定されていないCanExecute場合PreviewCanExecute、およびイベントは、キーボードフォーカスを持つ要素で発生します。 ICommandSource CommandTargetIf the CommandTarget is not set on the ICommandSource, the PreviewCanExecute and CanExecute events are raised on the element with keyboard focus.

適用対象