2012-10-26 44 views
1

我正在開發一個自定義控件,它有一個打開彈出按鈕的按鈕。 當該彈出窗口包含我的自定義控件的另一個實例(它也有一個打開另一個彈出窗口的按鈕,例如日曆)時,會發生一些問題。 第二個(嵌套)彈出窗口不會被懷疑。當父級彈出窗口關閉時,點擊不起作用,不會關閉。 使用嵌套彈出窗口時是否有任何特定的最佳做法?wpf嵌套彈出框

+0

請分享一些代碼。 –

+0

我們正在做基本相同的事情 - 我們有打開彈出式窗口的按鈕,有時包含打開嵌套彈出式窗口的按鈕。如果兩個彈出窗口都有StaysOpen =「false」,則單擊/觸摸將停止工作,並且當您在父彈出窗口中單擊時,嵌套彈出窗口不會關閉。有時我們的應用程序也完全停止處理點擊/觸摸。如果父級彈出窗口的StaysOpen =「true」,它就可以工作。 – Valerie

回答

1

我有同樣的問題。我們在我們的wpf控制庫中有一個自定義DropDownSubsetSelector控件。此控件在其控制模板中有Popup,其中StaysOpen="False"。今天,我不得不把這個控件放在一個自定義視圖中,該視圖位於wpf的Popup控件中,並且被StaysOpen="False"控制,並且想知道這個意外嵌套的Popup的行爲。我的這個問題的解決方法是檢查微軟的經典ComboBox控件的源代碼。你可以在這裏找到它Combobox Source。您可以看到它在Popup控件上的行爲與您期望的Popup位於另一個Popup上的行爲完全相同,並且它的模板具有彈出窗口(可選項目的下拉列表)。

您必須訂閱事件MouseDownEventLostMouseCaptureEvent,並處理鼠標捕獲以正確處理Popup控制區域外的MouseDownEvent。檢查並複製嵌套ExtendedPopup的一些源代碼。你可以從經典的Popup繼承它。