Dot-Net
為什麼點擊背景區域時 WPF 彈出視窗會關閉?
我有一個 WPF
Popup控制項,其中包含一些編輯控制項(列錶框、文本框、複選框),佈局有相當多的空白。
Popup.StaysOpen設置為False,這是必需的。如果使用者點擊應用程序中的其他位置,則應認為編輯操作已中止並且彈出視窗應關閉。不幸的是,每當使用者在彈出視窗的背景區域(編輯控制項之間的空間)內點擊時,彈出視窗也會關閉。
我嘗試將彈出視窗設置為
Focusable. 我還嘗試將彈出視窗的子項 (aBorder) 設置為可聚焦。兩方面都沒有運氣。此外,滑鼠事件似乎在彈出視窗中穿行。當我點擊它時,彈出視窗下方的任何元素都會成為焦點。儘管
Popup和Border(我點擊進入)都具有IsHitTestVisible和Focusable設置為true。
最後,我發現以下工作。鑑於…
<Popup x:Name="_popup" StaysOpen="False" PopupAnimation="Slide" AllowsTransparency="True">…我在呼叫後在建構子中使用了此程式碼
InitializeComponent…// Ensure that any mouse event that gets through to the // popup is considered handled, otherwise the popup would close _popup.MouseDown += (s, e) => e.Handled = true;