Raj*_*san 11 c# xaml windows-8 windows-runtime winrt-xaml
我正在尝试实现一个自定义控件,它包含一个带有一些画布元素作为子元素的网格,当在网格上进行滑动操作时,我打算用canvas元素执行一些操作.我无法处理网格的滑动,我已经在msdn - win8 Dev论坛中发布了相同的内容
小智 24
我是在同一条船上,你们这些家伙,因为没有样品在那里对这个是怎么做的,但仔细阅读和审查关于如何滑动手势是在Windows 8商店应用使用C#实现的MSDN文档后,这是什么我提出了(它适用于我的应用程序,需要向上/向下/向左/向右滑动):
首先,而不是GestureRecognizer,操纵事件需要被使用,因此对电网要办理刷卡(让说,你让这个需要整个屏幕,以便它解释手势)做以下:
我调用了网格滑动表面,我正在处理Y轴和X轴的操作模式:
swipingSurface.ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY;
Run Code Online (Sandbox Code Playgroud)
然后连接你想要通知的操作事件,在我的情况下,我只想知道操作开始和结束时:
swipingSurface.ManipulationStarted += OnManipulationStarted;
swipingSurface.ManipulationCompleted += OnManipulationCompleted;
Run Code Online (Sandbox Code Playgroud)
在你的操控开始时做任何你想做的事情,比如如果你想要获得初始点.但实际的技巧是在ManipulationCompleted事件中,你需要获得手势产生的Velocities,如下所示:
public void OnManipulationCompleted(object sender, ManipulationCompletedEventArgs e) {
var velocities = e.Velocities;
}
Run Code Online (Sandbox Code Playgroud)
ManipulationCompletedEventArgs Velocities属性将返回ManipulationVelocities类型的结构,其中包含其他属性:
- 角度:以毫秒为单位的旋转速度.
- 扩展:DIPs每毫秒的扩展或缩放速度.
- 线性:DIPs每毫秒的直线速度.
我实际上是在看线速度,它是一个包含X和Y值的点,表示手势的执行方向; 例如,如果向上滑动,您会注意到Y值为正,如果向下滑动则Y值为负; 对于X值也是如此,如果向左滑动,则X值为负,如果滑动是正确的,则X值为正,因此您可以使用这些值并检查滑动方向,最终点等.
希望这可以帮助.