2008-12-06 39 views
3

除了在Mouse/Key Up/Down事件處理程序中設置多個標誌之外,是否有一種簡單的方法可以告訴觸發Button的Click事件?我目前只對區分鼠標和其他東西感興趣,但如果可能的話,處理Stylus和其他輸入類型將會很好。我是否必須創建自己的按鈕控件才能實現此目的?如何判斷按鈕點擊事件是由WPF中的鍵盤還是鼠標觸發的?

編輯:爲了說明我爲什麼在意:在這種特殊情況下,我試圖爲某種圖片瀏覽器實現「下一個」和「上一個」按鈕。有問題的照片可能大小不同,按鈕的位置也會改變(所以它們總是居中在照片下方)。如果您需要滾動瀏覽多張圖片,使用鼠標按下這些按鈕非常煩人,所以我希望鼠標位置相對於點擊按鈕保持不變,但只有在鼠標點擊而不是鍵盤時。

編輯2:無論按鈕位於頂部還是底部,都無關緊要,因爲中心可以隨時更改。 「圖片瀏覽器」在這裏只是一個抽象概念,在這個特殊情況下,圖片的左上角保留了它的位置對我來說很重要,但是在詳細討論中超出了問題的範圍。縮放圖片在這類應用程序中並不是那麼微不足道,所以我確實想知道我要求不要進入UI實現討論的問題的答案。

+0

我的回答沒有給你足夠的信息,或者我錯過了什麼嗎? – Micah 2008-12-07 23:30:04

+0

您的回答正是我沒有要求的 - 分別處理鼠標/鍵上下事件處理程序。是的,這是一種做法,但並不像我希望的那樣優雅。 – 2008-12-08 05:32:51

回答

6
if (InputManager.Current.MostRecentInputDevice is KeyboardDevice) 
0

您應該專門處理MouseXXX,StylusXXx和KeyboardXXX事件。

0

你能詳細說明你爲什麼會在意嗎?

多年來,我自己寫了很多自定義控件,我不記得有一個例子我關心點擊事件是如何觸發的。 (除了VB6之前的控制生命週期小故障,它取決於你點擊一個按鈕,使用了一個加速鍵,還是按下ENTER作爲默認值,以不同的順序觸發了焦點點擊丟失焦點)。

+0

在我的情況下,我有一個文本框在推入回車將點擊默認按鈕。如果用戶沒有輸入一個值,我想警告他們(由於之前的操作,這很容易)。但是,如果他們點擊按鈕本身,我認爲這是故意的,他們不想輸入一個值。 – 2011-08-19 07:50:12

0

就我個人而言,當人們將按鈕放在Windows窗體和網頁的底部時,我覺得很煩人。閱讀關於用戶界面的一些文獻,你會發現,如果大多數人在頁面/表單上沒有找到有趣的內容,他們甚至都沒有那麼遠。只要我知道內容對我來說不感興趣,我希望能夠點擊下一個,所以請將導航按鈕保留在頂部。

我會把prev/next放在圖片的頂部,您可以控制它們的位置。跳舞這些按鈕違背了關於UI一致性的大多數意見。爲鼠標用戶和鍵盤用戶進一步創造不同的體驗也違背了目前大多數關於良好UI設計的看法。

另一種方法是選擇一個圖片可以在UI上獲得的恆定最大大小,如果它超過該比例以適合它,則允許它在一幀內自由更改。如果您絕對必須將它們放在底部,這可以讓您的按鈕保持在同一個位置。

0

你可以用不同的設備創建一個枚舉,擁有一個你每次設置鼠標/鍵盤等設置的全局屬性。已啓動,只需在需要時提及即可。

相關問題