2011-03-03 43 views
0

我在Popup控件上使用WP7 Tookit ListPicker(二月發行版)。我已經鎖定了「後退」按鈕,因此我可以關閉彈出窗口。WP7 ListPicker彈出導致後退按鈕問題

如果我在彈出模式下打開ListPicker時按下後退按鈕,我的後退按鈕事件處理程序在ListPicker處理它之前觸發,因此ListPicker和彈出窗口都關閉。

我想過處理它的一種方法是檢查並查看是否在彈出窗口中打開了任何ListPickers,如果這樣關閉並取消導航(彈出窗口上的控件是動態添加的,所以我必須枚舉它通過彈出的子控件來檢查),但我找不到查看ListPicker是否打開或關閉它的方法。

所以我的問題是a)是否有辦法在後退按鈕處理程序中處理此問題,如果沒有b)如何檢查ListPicker是否打開。

回答

1

在彈出式窗口控制的BackKeyPress回調添加以下檢查:

if(myListPicker.ListPickerMode == ListPickerMode.Normal) { 
    // Close popup 

    // Cancel navigation 
    e.Cancel = true; 
} 

ListPickerModeExpandedFullListPicker會趕上返回鍵按下事件和關閉本身。

編輯:

據@ SteveChadbourne的評論以下工作:

if(myListPicker.ListPickerMode != ListPickerMode.Normal) { 
    // Close the ListPicker 
    myListPicker.ListPickerMode = ListPickerMode.Normal; 

    // Cancel navigation 
    e.Cancel = true; 

} 
+0

嘗試設置ListPicker Full並且它彈出之前沒趕上回按鍵。檢查ListPickerMode不會告訴我ListPicker是否打開。如果打開,還需要知道如何關閉。 – 2011-03-03 04:44:24

+0

@SteveChadbourne:你的意思是「ListPickerMode不告訴我ListPicker是否打開」?當ListPicker顯示多個項目時,ListPickerMode設置爲「Expanded」,當ListPicker處於全屏模式時,ListPickerMode設置爲「Full」。要關閉ListPicker,只需將ListPickerMode設置爲'Normal',但如果您使用上面的代碼,則不必執行此操作,只需忽略後退按鍵即使ListPickerMode不是Normal。當處於Expanded或Full模式並且按下後退鍵時,ListPicker會自動關閉。 – Praetorian 2011-03-03 07:35:12

+0

我完全得到了ListPickerMode所做的操作。認爲它被設置爲反映行爲,例如設置爲全部以始終顯示彈出窗口。它實際上反映的是狀態。我的問題並沒有被修正,如果不是正常,就好像完全一樣,父窗口在ListPicker之前關閉。如果已滿並且設置爲正常且已取消導航和所有作品,則會被困。乾杯。 – 2011-03-03 18:19:05