Dot-Net

為什麼點擊背景區域時 WPF 彈出視窗會關閉?

  • March 6, 2009

我有一個 WPFPopup控制項,其中包含一些編輯控制項(列錶框、文本框、複選框),佈局有相當多的空白。

Popup.StaysOpen設置為False,這是必需的。如果使用者點擊應用程序中的其他位置,則應認為編輯操作已中止並且彈出視窗應關閉。

不幸的是,每當使用者在彈出視窗的背景區域(編輯控制項之間的空間)內點擊時,彈出視窗也會關閉。

我嘗試將彈出視窗設置為Focusable. 我還嘗試將彈出視窗的子項 (a Border) 設置為可聚焦。兩方面都沒有運氣。

此外,滑鼠事件似乎在彈出視窗中穿行。當我點擊它時,彈出視窗下方的任何元素都會成為焦點。儘管PopupBorder(我點擊進入)都具有IsHitTestVisibleFocusable設置為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;

引用自:https://stackoverflow.com/questions/619798