我想弄清楚如何在我的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)