透過發送器計時器停用命令來源範例
更新:2007 年 11 月
本範例顯示如何透過 DispatcherTimer 啟用和停用命令來源。
命令來源 (如 MenuItem 類別 (Class) 和 Button 類別) 會接聽它們所附加之 RoutedCommand 上的 CanExecuteChanged 事件,以便判斷何時必須查詢命令,以確定命令是否可在目前的命令目標上執行。如果不能執行命令,通常命令來源會自行停用,如果可以執行命令則會自行啟用,例如,當命令不能執行時,MenuItem 會變成灰色。
CommandManager 會透過 RequerySuggested 事件,告知 RoutedCommand 關於命令目標上的條件已變更。RoutedCommand 會引發 CanExecuteChanged 事件,而命令來源會接聽此事件。通常這個告知機制都是適當的,但是在某些情況下 CommandManager 不會知道命令目標上的條件已變更,因此不會引發 RequerySuggested 事件,而命令來源就不會查詢 RoutedCommand。在這種情況下,可以呼叫 InvalidateRequerySuggested,強制 CommandManager 引發 RequerySuggested 事件。
此範例會建立一個 RoutedCommand,只有當目前時間的秒讀數大於目標值時才會加以執行。並會建立 DispatcherTimer,每一秒鐘都會呼叫 InvalidateRequerySuggested。這樣可確保命令來源會收到 CanExecuteChanged 事件,因此它可以呼叫命令的 CanExecute 方法。
如需此範例的另一個版本,請參閱透過系統計時器停用命令來源範例範例。如需使用命令的詳細資訊,請參閱命令概觀。
這個範例示範 Windows Presentation Foundation 的特定功能,因此並未遵循應用程式開發的最佳做法。如需 Windows Presentation Foundation (WPF) 和 Microsoft .NET Framework 應用程式開發最佳做法的完整內容,請依適當情況參閱下列內容:
協助工具 - 協助工具最佳作法
安全性 - Windows Presentation Foundation 安全性
當地語系化 - WPF 全球化和當地語系化概觀
建置範例
安裝 Windows Software Development Kit (SDK),然後開啟 [建置環境命令] 視窗。在 [開始] 功能表中,指向 [所有程式]、[Microsoft Windows SDK],然後按一下 CMD 殼層。
接著,在軟體開發套件 (SDK) 文件處下載軟體,並存至您的硬碟上。
若要組建建置環境命令視窗的範例,您必須先移至範例的來源目錄在命令提示字元中,輸入 MSBUILD。
若要在 Microsoft Visual Studio 中建置範例,請載入範例方案或專案檔,然後按下 CTRL+SHIFT+B。
執行範例
若要在 [建置環境命令視窗] 中執行編譯後的範例,請執行位在包含範例原始程式碼的檔案夾 (Bin\Debug 或 Bin\Release 檔案夾) 下的 .exe 檔案。
若要在 Visual Studio 中執行編譯後的範例並進行偵錯,請按 F5。