【问题标题】:Handle Double Tap Globally WP7?全局处理双击 WP7?
【发布时间】:2012-07-27 15:17:19
【问题描述】:

所以我只是对我的项目进行测试,并意识到如果你有一个链接(例如导航服务),它需要点击和双击。这意味着如果我有一个按钮可以转到应用程序内的另一个页面,除非我不处理双击,否则应用程序将会崩溃。

如果我有这个:

<toolkit:HubTile Name="XXX"
      Message="XXXYYY" Source="ZZZ" 
      Title="XYZ" Tap="XYZ_Tap"/>

如果有人双击此图块,应用程序将崩溃。所以我必须添加

DoubleTap="XYZ_DoubleTap"

属性。但这既累人又似乎没有必要。那么有没有办法在全球范围内处理所有双击?然后,如果我想在某个地方实际实现它,只需覆盖它?谢谢:)

编辑:DoubleTap 的“全局”事件处理程序很简单,什么也不做。这样我就不必为每个链接或按钮重写它。并且每次调用未处理的 DoubleTap 时都不会抛出异常。

【问题讨论】:

    标签: c# windows-phone-7 xaml


    【解决方案1】:

    崩溃很可能是因为在第二次“点击”时引发了异常。类似于“当任务不在前台时,不允许导航。”

    我想为 DoubleTap 放置一个空的事件处理程序会起作用,因为它可以识别双击事件并且什么都不做。另一种可能无论如何都应该这样做的方法是将导航调用包装在 try/catch 块中,以捕获第二次点击引发的异常。

    但是为了解决您的具体问题,除了什么都不做之外,您还设想了什么样的全局双击处理方式?

    【讨论】:

    • 嗯,我知道应用程序崩溃的原因,也知道异常的原因。这就是为什么我要解决它。但是为每个按钮、链接或其他似乎没有必要的东西放置一个空的 DoubleTap 事件处理程序。
    • 所以全局处理程序负责处理双击操作,这没什么。这样我就不必为每个链接重写 DoubleTap 事件处理程序。
    • 不幸的是,事件处理程序被限制为特定类的实例成员,所以我认为您无法做到这一点。我仍然认为更简单的解决方案是在 try/catch 中捕获异常。活动要求见链接:msdn.microsoft.com/en-us/library/cc221357%28v=VS.95%29.aspx
    • 我虽然在这种情况下 Try-Catch 块是个坏主意。我们知道为什么抛出异常,最好处理它,对吧?我想现在我只会使用 Olivier 的解决方案。
    • 这取决于你如何看待它以及你想要的行为是什么。如果用户“双击”或不小心多次点击按钮,您是否希望它什么也不做?如果是这样,那么实现一个 DoubleTap 事件处理程序可以实现这一点。如果您希望双击注册类似于单击,则使用 try/catch 将捕获第二次点击中不需要的异常,但用户仍将导航。不过一般来说,由于存在异常的可能性,因此使用 try/catch 似乎更安全。只是我的两分钱。
    【解决方案2】:

    您应该创建一个继承自HubTile 的自定义控件,并将DoubleTap 事件设置为在该类中不执行任何操作。

    【讨论】:

    • 这正是我现在正在做的。我只是希望每个 DoubleTap 都有更多的东西,而不是特定于每个元素。不过谢谢,因为你的答案最接近我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多