我有一個RoutedUICommand可以通過UI中的各個地方訪問。如全局的Keyboardshortcut,Menu,ContextMenu或Button。要在RoutedUICommand.CanExecute和RoutedUICommand.Execute方法中執行的代碼取決於使用了哪個UI元素。我怎樣才能實現這種差異化。我在想,我可以使用(Can)ExecutedRoutedEventArgs.Source或OrigianlSource,但源代碼始終是相同的。它是主要的根窗口。這通常如何實現?我可能會做錯什麼?contextsensitive RoutedUICommand.CanExecute,執行
0
A
回答
0
通常情況下,您可以針對不同的「目標」使用不同的CommandBinding實現 - 對每個「源」具有不同的行爲是不尋常的。
你能舉一個你想要做什麼的例子嗎?
1
如果你需要不同的代碼來運行,取決於調用命令的UI,你可能做錯了什麼。
如果你有類似於按鍵操作或打開一個對話框要求從菜單獲取更多信息的東西,應該將其分解爲兩個命令(如MS Office「打印」和「快速打印」命令)。
如果你真的必須從每個UI元素做不同的事情,那麼使用命令沒有任何優勢,並且應該考慮使用老式的事件處理程序,至少該元素特定的代碼與元素綁定並且不存儲在一個包含所有「Execute」代碼的中心。
如果您選擇忽略我上面的建議,請查看CommandParameter屬性,您可以爲每個UI元素的參數設置不同的值,至少可以保留UI/Logic的錯覺分離命令旨在提供。
相關問題
- 1. 使用執行/可執行
- 2. Skip OnAction執行執行
- 3. 執行mvn發佈:執行
- 4. 傀儡執行不執行
- 5. 執行酒=執行`這wine`
- 6. CMD執行BAT執行CMD
- 7. 先執行()執行OrderBy()?
- 8. PL/pgSQL執行與執行
- 9. 執行hsqldb立即執行
- 10. 執行'import.py'時執行Python ImportError,但執行'python import.py'時執行Python ImportError
- 11. 並行執行
- 12. 串行執行
- 13. 並行執行
- 14. 防止SQL執行查詢與執行或執行
- 15. 執行同步語句執行交錯執行
- 16. 無法從後臺執行多個值來執行後執行
- 17. 由DefaultHttpClient執行的殺死應用程序(killProcess)執行執行
- 18. 執行使用Powershell執行的C#可執行文件出錯
- 19. C - app Socket,在執行read()之前不執行printf()而執行
- 20. 執行
- 21. 執行
- 22. 執行
- 23. 執行
- 24. 執行
- 25. 執行
- 26. 執行
- 27. 執行
- 28. 執行程序執行兩次
- 29. Jersey:執行前和執行後鉤子?
- 30. Pycurl執行()方法,writefunc執行模型
準確地有不同的來源我帽子連接命令綁定esch來源。這樣我就可以通過檢查發件人來區分誰是來源。 – bitbonk 2009-02-12 22:30:27