2010-06-08 80 views
2

我正在構建一個特殊的列表框控件,我們的設計師需要通過一些微妙的方式進行定製。WPF:如何使正常的listbox左鍵選擇行爲使用中鼠標呢?

他們希望看到的一件事是,中間的按鈕拖動做左側按鈕拖動通常會做的事情(我們正在將左拖放到其他東西)。

所以它需要的是左鍵拖拽確實在ListBox默認實現了兩個關鍵特徵:

  1. 按住左鍵並拖動,選擇開始,我點擊向下延伸到哪裏我拖累。
  2. 在列表框區域外面拖動時,如果在該方向上存在可滾動空間,則它會滾動。

在我手工複製這個功能之前,有沒有什麼簡單的方法來愚弄ListBox,讓它認爲它是獲取左鼠標拖動事件,而是獲得中鼠標?

回答

0

MouseDown會幫助你。它監測所有的老鼠。這裏有一篇很好的文章。 http://blogs.msdn.com/b/nickkramer/archive/2005/06/13/428754.aspx

從文章:

我們的MouseLeftButtonDown和 的MouseRightButtonDown事件,但沒有 MouseMiddleButtonDown事件。您可以使用 附加事件Mouse.MouseDown獲取中間按鈕,其中 偵聽所有鼠標按鈕,並且 檢查args.ChangedButton == MouseButton.Middle。

+0

哦,讓我補充一點,沒有出爐的方式來使用鼠標中鍵。 – 2010-06-08 23:09:31

+0

我的問題不是關於如何獲取中鼠標事件,而是關於如何重新映射捕獲的鼠標中間事件到可以傳遞給列表框的左鼠標事件。 – scobi 2010-06-09 16:56:47

+0

列表框不會自動實現拖放,所以我不確定你在問什麼。 WPF爲你提供了一個框架來連接拖放,但是沒有屬性可以打開,或者你只是掛鉤的事件會自動處理拖動。您仍然需要捕獲mousedown,或者更確切地說是PreviewMouseDown。無論您要爲左按鈕輸入什麼代碼,都可以到那裏並使用事件參數來確定它是被捕獲的中間按鈕。 下面是如何做到這一點:http://diptimayapatra.wordpress.com/2010/01/16/drag-and-drop-item-in-listbox-in-wpf/ – 2010-06-09 18:14:17

相關問題