2009-12-11 48 views
1

我有一個包含ListView的彈出窗口。 ListView包含客戶名稱。當單擊搜索欄時,彈出窗口會打開。用戶可以在搜索欄(文本框)中輸入文本,並根據輸入過濾列表視圖。焦點丟失時關閉彈出菜單

我想在彈出焦點時關閉彈出窗口。但是,默認的「自動關閉」行爲StaysOpen="False"不好,因爲每次有人單擊搜索欄時它都會關閉彈出窗口。

除非焦點轉到搜索欄時,我怎樣才能在彈出焦點時關閉彈出窗口?

回答

9

也許你可以在搜索文本框中添加一些鉤子。當它收到焦點時,它可以打開彈出窗口並設置StaysOpen = true。當文本框失去焦點時,它可以在彈出菜單上設置StaysOpen = false

XAML代碼:

<Popup x:Name="pop" StaysOpen="False"> 
1

添加事件處理程序的離開事件(當焦點在失去控制的稱呼)。在此事件處理程序中,可以檢查具有焦點的新項目是否爲搜索文本框。

if(FormName.ActiveForm.ActiveControl == txtSearchBox)

然後基於搜索文本框是否已專注適當設置StaysOpen

1

如何:

  1. 正向對焦丟失了(離開,當控制不再是形式的主動控制時),彈出式的事件父窗體
  2. 父窗體會,做沒有,如果當前焦點在搜索欄上;否則,它會關閉彈出窗口。
相關問題