【发布时间】:2014-03-31 06:09:28
【问题描述】:
我写了一个小控件,它为我的 Win8 Phone 应用程序创建了一个弹出窗口,它为我做了所有讨厌的事情,比如旋转、正确放置等。 弹出窗口在 Popup 控件中打开,但不在新电话页面上。 为了关闭弹出窗口,我的控件连接到底层页面的“backKeyPressed”事件。 这就像魅力一样,直到底层页面有自己的 BackKeyPressed 事件实现。在这种情况下,页面事件被触发,而不是弹出控件事件。
如果我拥有该事件,我可以创建自己的堆栈以首先调用最后添加的事件,但我不拥有页面的事件。 据我所知,一旦我的控件取消订阅该事件,我就无法取消注册任何先前附加的事件处理程序并重新分配它。
我可以只有一个 BackKeyPressed 事件的实现,然后通知弹出控件关闭自身(如果打开),如果没有打开,则执行页面特定的实现。但这需要在我可能想要使用弹出窗口的所有页面上更改代码。更糟糕的是,如果我有 5 个可能的弹出窗口,我将不得不检查所有这些:-( 所以我正在寻找一个集中处理这个问题的选项。
我还有哪些其他选择可以克服这种情况?
【问题讨论】:
标签: c# windows-phone-8