RoutedCommand.CanExecuteChanged イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
コマンド ソースに対する変更がコマンド マネージャーによって検出されたときに発生します。 これらの変更は、多くの場合、現在のコマンドの対象に対してコマンドを実行するかどうかに影響します。
public:
virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler
Public Custom Event CanExecuteChanged As EventHandler
イベントの種類
実装
例
次の例は、 の CanExecuteChanged カスタム実装 ICommandSourceのイベント ハンドラーです。
this.Command
この例では、 の Command プロパティです ICommandSource。 コマンドが でない null
場合、コマンドは に RoutedCommandキャストされます。 コマンドが の場合、 RoutedCommandメソッドは と を CanExecute 渡して CommandTarget 呼び出されます CommandParameter。 command が ではない RoutedCommand場合は に ICommand キャストされ、 CanExecute メソッドは を CommandParameter渡して呼び出されます。
メソッドが を CanExecute 返す true
場合、コントロールは有効になります。それ以外の場合、コントロールは無効になります。
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 、 によって発生する イベントをリッスン RequerySuggested します CommandManager。 イベントは RequerySuggested 、キーボード フォーカスの変更など、コマンドを実行する必要があるかどうかを変更する可能性がある条件が満たされるたびに発生します。 コマンドがイベントを RequerySuggested 受信すると、 イベントが発生します CanExecuteChanged 。 通常、コマンド ソースはこのイベントをリッスンし、 メソッドを使用して を RoutedCommand クエリします CanExecute 。 コマンド バインドの一部として、コマンドを実行できない場合、ほとんどのコマンド ソースは自身を無効にします。 この例は、コマンドを MenuItem 実行できない場合に灰色表示になる場合です。
状況によっては、 CommandManager はコマンドの実行機能を変更する条件の変更を認識しきらない場合があります。 このような場合は、 メソッドをCommandManager呼び出して 強制的に イベントをInvalidateRequerySuggestedRequerySuggested発生させることができます。これにより、 によって RoutedCommand イベントが発生しますCanExecuteChanged。
適用対象
.NET