2010-09-17 70 views
1

我有一個WPF應用程序,其中有ListBox。對於這個列表框,我想模仿用戶控制面板(自Windows Vista以來)的行爲 - 即:您單擊列表項目,與雙擊相同。WPF相當於LVS_EX_ONECLICKACTIVATE?

在Win32中,我會通過打開LVS_EX_ONECLICKACTIVATE樣式來完成此操作。

在WPF中,我試圖通過處理MouseLeftButtonUp事件來做到這一點。不幸的是,這很奇怪,它有時會挑選錯誤的項目。

例如,如果您雙擊標題欄(標題)以最大化窗口,則會在列表框中出現第二次鼠標懸停並引發事件。同樣,如果一個項目部分在視圖中,點擊它將其滾動到視圖中,但是對於在視圖中現在爲的項目引發了鼠標移動,而不是單擊該項目。

現在,再次,如果這是Win32(在LVS_EX_ONECLICKACTIVATE之前),我將鼠標捕獲到鼠標上,記住項目,並檢查我是否已經捕獲鼠標。

但它不是Win32,它是WPF。如何在WPF列表框中單擊激活?

回答

0

我必須承認,我從來沒有偶然發現過LVS_EX_ONECLICKACTIVATE,但據我瞭解,它處理「SelectionChanged」應該做的伎倆。

或者在選擇時雙擊選擇或激活有什麼區別?

+0

這可能會工作,但我也想知道是否有一種方法來獲得鍵盤可訪問性,一鍵式激活讓你在Win32中。 – 2010-09-17 09:44:49

+0

好吧,當使用箭頭鍵進行導航時,「SelectionChanged」事件可能也會觸發,這當然是不可接受的。 – 2010-09-17 12:00:57