我想弄清楚如何在我的Air應用程序中,在輔助窗口而不是主應用程序窗口中打開彈出式窗口。Flex - 如何獲取自定義網格列過濾器編輯器的父級並打開彈出式窗口?
我正在使用ReusableFX組件,其中包括具有過濾和其他功能的自定義DataGrid。當您單擊網格中列的頂部時,過濾功能將通過PopUpManager顯示彈出窗口。
PopUpManager.addPopUp(this, FlexGlobals.topLevelApplication as DisplayObject);
問題是彈出窗口在主應用程序中打開 - 我假設是因爲'topLevelApplication'引用。
所以,我需要一種方法來在當前Air's s:Window中打開這個窗口。
我假設我需要一種方式來走:this.parent.parent或this.owner.owner - 雖然我已經嘗試過,它似乎並沒有工作(它說空引用)。
或者,有沒有辦法獲得當前最頂級的窗口/組件(不是主應用程序/窗口)?
更新: 我決定爲該組件創建一個新項目,並添加到Air庫中。現在我可以訪問「NativeApplication.nativeApplication.activeWindow」調用。這給了我正確的空氣窗口。但是,它似乎沒有工作:
PopUpManager.addPopUp(this, NativeApplication.nativeApplication.activeWindow as DisplayObject);
我的彈出菜單不顯示。我假設因爲「activeWindow」實際上不是DisplayObject? (讓我怎麼得到的DisplayObject如果是這樣的話?)
更新: 難道說我的this adobe bug?(found here originally)