RoutedCommand.CanExecute(Object, IInputElement) メソッド

定義

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

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

パラメーター

parameter
Object

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

target
IInputElement

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

戻り値

Boolean

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

属性

例外

targetUIElement または ContentElement ではありません。target is not a UIElement or ContentElement.

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

this.Command この例では Command 、のプロパティはです ICommandSourcethis.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. コマンドがの場合 RoutedCommandCanExecute メソッドが呼び出され、とが渡され 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.

メソッドがを返した場合は CanExecute true 、コントロールが有効になります。それ以外の場合、コントロールは無効になります。If 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 CanExecute PreviewCanExecute 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 RoutedCommand 呼び出され CanExecuteRoutedEventHandler CommandBinding ます。If 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.

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

適用対象