【问题标题】:WP7 back key press handling in child popup子弹出窗口中的 WP7 后退按键处理
【发布时间】:2010-10-29 12:39:40
【问题描述】:

我制作了一个包含切换按钮的用户控件。当用户点击它时,它会显示一个全屏大小的弹出窗口。我想添加以下功能:当用户按下硬件后退按钮并打开弹出窗口时,关闭弹出窗口。问题是只有用户控件的父页面有 backkeypress 事件。如何在作为可重用控件的用户控件中处理此问题? 我尽量避免在页面代码中处理后退按钮按下,因此处理这个就像从页面的 OnBackKeyPress 事件处理程序调用用户控件的方法是我想做的最后一件事(页面是通过编程方式生成的)......

【问题讨论】:

    标签: c# windows-phone-7


    【解决方案1】:

    控件需要以某种方式找到对页面的引用——要么在构造函数中,要么通过向上遍历 UI 树直到找到PhoneApplicationPage。然后它可以自己订阅the event,并在事件关闭时取消订阅。

    【讨论】:

    • 谢谢!现在我有另一个问题:我找到了父页面,但是在我的用户控件中从未调用事件处理程序:( parentPage = FindParentPage(this); if (parentPage != null) { parentPage.BackKeyPress += new EventHandler(parentpage_BackKeyPress); }
    • @Vic:你的parentPage 变量肯定是空的吗?那应该工作得很好。为了测试,如果您在页面中覆盖 OnBackKeyPress,会调用它吗?
    • 谢谢,问题是我投射到 Page 而不是 MainPage,现在它可以完美运行了 :)
    • 对于任何想知道如何找到PhoneApplicationPage 的人,请使用VisualTreeHelper,详见this answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多