次の方法で共有


ディスパッチャのタイマによるコマンド ソースの無効化のサンプル

更新 : 2007 年 11 月

このサンプルでは、DispatcherTimer を使用してコマンド ソースを有効または無効する方法を示します。

MenuItem クラス、Button クラスなどのコマンド ソースは、それらが割り当てられている RoutedCommandCanExecuteChanged イベントを待機し、コマンドが現在のコマンド ターゲットで実行できるかどうかをコマンドに照会して確認する必要があるタイミングを特定します。通常、コマンド ソースは、コマンドが実行できない場合は無効になり、コマンドが実行できる場合は有効になります。たとえば、MenuItem は、コマンドが実行できない場合に淡色表示になります。

CommandManager は、コマンド ターゲットの状態が変更されたことを RequerySuggested イベント経由で RoutedCommand に通知します。RoutedCommand は、コマンド ソースが待機している CanExecuteChanged イベントを生成します。通常は、この通知機構で十分ですが、コマンド ターゲットの状態が変更されたことを CommandManager が認識しないために、RequerySuggested イベントが生成されず、コマンド ソースが RoutedCommand に照会しない場合があります。このような状況では、InvalidateRequerySuggested を呼び出すことで、CommandManager に強制的に RequerySuggested イベントを発生させることができます。

このサンプルでは、現在の時刻の秒数がターゲット値を上回っている場合にのみ実行できる RoutedCommand を作成します。1 秒ごとに InvalidateRequerySuggested を呼び出す DispatcherTimer を作成します。これで、コマンド ソースが CanExecuteChanged イベントを受け取り、コマンドで CanExecute メソッドを呼び出すことができるようになります。

このサンプルの別のバリエーションについては、「システム タイマによるコマンド ソースの無効化のサンプル」を参照してください。コマンド実行の詳細については、「コマンド実行の概要」を参照してください。

このサンプルでは、Windows Presentation Foundation の特定の機能を示します。そのため、アプリケーション開発のベスト プラクティスに従っていません。Windows Presentation Foundation (WPF) と Microsoft .NET Framework のアプリケーション開発ベスト プラクティスの包括的な説明については、適宜、次のトピックを参照してください。

ユーザー補助 - 「ユーザー補助のベスト プラクティス

セキュリティ - 「Windows Presentation Foundation のセキュリティ

ローカリゼーション - 「WPF のグローバリゼーションおよびローカリゼーションの概要

Download sample

サンプルのビルド

  • Windows ソフトウェア開発キット (SDK) をインストールして、そのビルド環境のコマンド ウィンドウを開きます。[スタート] メニューの [すべてのプログラム]、[Microsoft Windows SDK] の順にポイントし、[CMD シェル] をクリックします。

  • サンプルをハード ディスク ドライブにダウンロードします。通常は、ソフトウェア開発キット (SDK) のドキュメントからダウンロードします。

  • ビルド環境のコマンド ウィンドウからサンプルをビルドするには、サンプルのソース ディレクトリに移動します。コマンド プロンプトで「MSBUILD」と入力します。

  • Microsoft Visual Studio でサンプルをビルドするには、サンプル ソリューションかプロジェクト ファイルを読み込んで、Ctrl キーと Shift キーを押しながら B キーを押します。

サンプルの実行

  • コンパイルしたサンプルをビルド環境のコマンド ウィンドウから実行するには、サンプルのソース コード フォルダの下にある Bin\Debug または Bin\Release フォルダで .exe ファイルを実行します。

  • コンパイルしたサンプルを Visual Studio でデバッグしながら実行するには、F5 キーを押します。

参照

処理手順

システム タイマによるコマンド ソースの無効化のサンプル

概念

コマンド実行の概要