2009-02-11 18 views
0

我有一個RoutedUICommand可以通過UI中的各個地方訪問。如全局的Keyboardshortcut,Menu,ContextMenu或Button。要在RoutedUICommand.CanExecute和RoutedUICommand.Execute方法中執行的代碼取決於使用了哪個UI元素。我怎樣才能實現這種差異化。我在想,我可以使用(Can)ExecutedRoutedEventArgs.Source或OrigianlSource,但源代碼始終是相同的。它是主要的根窗口。這通常如何實現?我可能會做錯什麼?contextsensitive RoutedUICommand.CanExecute,執行

回答

0

通常情況下,您可以針對不同的「目標」使用不同的CommandBinding實現 - 對每個「源」具有不同的行爲是不尋常的。

你能舉一個你想要做什麼的例子嗎?

+0

準確地有不同的來源我帽子連接命令綁定esch來源。這樣我就可以通過檢查發件人來區分誰是來源。 – bitbonk 2009-02-12 22:30:27

1

如果你需要不同的代碼來運行,取決於調用命令的UI,你可能做錯了什麼。

如果你有類似於按鍵操作或打開一個對話框要求從菜單獲取更多信息的東西,應該將其分解爲兩個命令(如MS Office「打印」和「快速打印」命令)。

如果你真的必須從每個UI元素做不同的事情,那麼使用命令沒有任何優勢,並且應該考慮使用老式的事件處理程序,至少該元素特定的代碼與元素綁定並且不存儲在一個包含所有「Execute」代碼的中心。

如果您選擇忽略我上面的建議,請查看CommandParameter屬性,您可以爲每個UI元素的參數設置不同的值,至少可以保留UI/Logic的錯覺分離命令旨在提供。