2009-05-26 24 views
1

當WPF組合框被點擊並且焦點對準時,之後發生的唯一交互可以通過組合框來進行。如果其他任何事情與窗口功能(包括窗口功能(minimize,restore,restore,close, resize))和窗口中的任何控件相互作用,則操作將被忽略,ComboBox會失去焦點。當組合框專注於WPF鼠標行爲

另外,MouseEnterMouseLeave上的窗口按鈕仍然是活動的,但是當窗口邊框(?)上出現MouseEnter時,鼠標指針不會改變爲調整大小指針。這種行爲是有道理的,因爲ComboBox使用彈出控件。彈出控件獨立於主視覺樹而存在,並且如果窗口移動或被調整大小,則彈出窗口保持固定在主窗口上方浮動。

我試過使用Reflector,看看ComboBox正在做什麼,但我一直無法找到我在找什麼。基本上,我不知道這個行爲是來自窗口,組合框還是與彈出窗口有關。我怎麼解決這個問題?

回答

1

你在你的描述中是正確的,彈出窗口保持所有的動作焦點,直到它本身失去焦點。如果您嘗試更改ComboBox的功能,您可能需要查看creating your own ControlTemplate,這些行爲有所不同,並且不保留彈出控件的默認操作。

希望這可以幫助,不完全確定你想要做什麼。

+0

我不想改變組合框的功能我試圖創建一個完全不同的控件,它像組合框控件模板一樣,只有沒有切換按鈕。如果你看看ComboBox,你可以看到當彈出窗口打開時,任何鼠標事件似乎都會通過。它甚至忽略了將鼠標懸停在調整大小指針正常顯示的窗口邊框上。我知道他們這樣做是爲了當窗口改變時彈出窗口不能被打開。我只是想弄清楚如何完成類似的行爲。 – BrandonS 2009-05-26 21:33:55

+0

在這種情況下,我可能會拋棄ComboBox的下拉思路,並創建一個控件,在切換時顯示內容。然後,您可以將其設置爲在鼠標焦點丟失時關閉內容面板。你將不得不復制ComboBox本身的功能,但可能只能通過這樣做達到你想要的行爲。 – 2009-05-27 16:06:52