MouseLeftButtonUp / Down与ManipulationCompleted

时间:2011-04-20 18:34:11

标签: silverlight windows-phone-7

对于给定的控件,是否有MouseLeftButtonUp(或者向下)选择ManipulationCompleted(或者向下)的原因只是需要处理“点击”事件(即用户点击控件和某事物)发生在Windows Phone 7?

我知道ManipulationCompleted很奇特,可以用它做更多的事情,比如检测一下滑动,但我要问的是所谓的“点击” - 即一个比另一个更好如果是这样,为什么?

3 个答案:

答案 0 :(得分:2)

这实际上取决于用户触摸控件时需要接收和处理的信息类型。 MouseLeftButtonUp / MouseLeftButtonDown是非常基本的触摸处理事件 - 这些提供了一种简单的方法来跟踪相对触摸位置,因此如果您需要知道与其他控件的距离是多远,则发生点击,可以使用这样的东西:

Debug.WriteLine(e.GetPosition(button1).X);

e代表MouseButtonEventArgs

另一方面,

ManipulationCompleted更适合您需要的情况:

  • 移动控件
  • 调整控件大小
  • 对控件执行任何转换

当调用ManipulationCompleted时,您的应用程序会收到比所需更多的信息(因为您只处理一个简单的触摸),因此我不建议将它用于非常简单的任务。

另外,请记住,对于基于按钮的控件,您可以ClickMode明确声明何时考虑点击。这就是MouseLeftButtonUpMouseLeftButtonDown发挥重要作用的地方,因为当按钮处于不同状态时,您可以绑定特定操作。对于ManipulationCompleted,这是不可能的,无论按钮处于什么状态,都会被触发。

答案 1 :(得分:0)

这是令人困惑的。为什么MouseLeftButtonUp在WP7中有效?没有老鼠! (Prolly,他们希望使应用程序更容易移动到SL,反之亦然)

在开发适用于Windows Phone的Siliverlight应用时,最好使用ManipulationCompleted。它不那么令人困惑。

PS。我也不喜欢FindResource。我打赌是幕后的字典,因此应该是GetResource。 Find表示获取资源需要O(lg(n))或更多。

答案 2 :(得分:0)

如果只想通过触摸来处理用户选择内容,您可以使用Silverlight Toolkit中的Tap手势获得更好的用户体验。

如果您不使用此功能,则必须为要触摸的每个项目处理2个额外事件。因为你需要处理Up& DownMouseButton *事件的Down版本或ManipulationStart&完成以确保在移除手指时被触摸的项目与手指与设备接触时首先触摸的项目相同。如果你不这样做,你可以得到奇怪的行为,所选项目不一定是大多数用户期望的。