當WPF組合框被點擊並且焦點對準時,之後發生的唯一交互可以通過組合框來進行。如果其他任何事情與窗口功能(包括窗口功能(minimize
,restore
,restore
,close
, resize
))和窗口中的任何控件相互作用,則操作將被忽略,ComboBox會失去焦點。當組合框專注於WPF鼠標行爲
另外,MouseEnter
和MouseLeave
上的窗口按鈕仍然是活動的,但是當窗口邊框(?)上出現MouseEnter
時,鼠標指針不會改變爲調整大小指針。這種行爲是有道理的,因爲ComboBox
使用彈出控件。彈出控件獨立於主視覺樹而存在,並且如果窗口移動或被調整大小,則彈出窗口保持固定在主窗口上方浮動。
我試過使用Reflector,看看ComboBox
正在做什麼,但我一直無法找到我在找什麼。基本上,我不知道這個行爲是來自窗口,組合框還是與彈出窗口有關。我怎麼解決這個問題?
我不想改變組合框的功能我試圖創建一個完全不同的控件,它像組合框控件模板一樣,只有沒有切換按鈕。如果你看看ComboBox,你可以看到當彈出窗口打開時,任何鼠標事件似乎都會通過。它甚至忽略了將鼠標懸停在調整大小指針正常顯示的窗口邊框上。我知道他們這樣做是爲了當窗口改變時彈出窗口不能被打開。我只是想弄清楚如何完成類似的行爲。 – BrandonS 2009-05-26 21:33:55
在這種情況下,我可能會拋棄ComboBox的下拉思路,並創建一個控件,在切換時顯示內容。然後,您可以將其設置爲在鼠標焦點丟失時關閉內容面板。你將不得不復制ComboBox本身的功能,但可能只能通過這樣做達到你想要的行爲。 – 2009-05-27 16:06:52