如何在Windows 10 UWP中为网格添加触摸操作事件?
作者:互联网
我目前正在Windows 10上工作,我想为用户添加滑动手势.因此,我做了一些研究,发现了操纵事件.我已经尝试了以下代码,但是当我使用鼠标指针而不是使用触摸滑动手势时它可以工作.
pageLayoutGrid.ManipulationMode = ManipulationModes.TranslateX;
pageLayoutGrid.ManipulationDelta += PageLayoutGrid_ManipulationDelta;
pageLayoutGrid.ManipulationCompleted += LayoutManipulationCompleted;
private void PageLayoutGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
e.Handled = true;
}
private void LayoutManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
var velocities = e.Velocities.Linear;
Double swipeLeftRight = velocities.X;
Double swipeUpDown = velocities.Y;
// A negative value means swiping to the left
if (swipeLeftRight < 0)
{
navigateToNextPage();
}
// a positive value is a swipe to the right.
else if (swipeLeftRight > 0)
{
navigateToPreviousPage();
}
}
此Grid的子元素是ScrollViewer.
有人可以建议代码出什么问题吗?
解决方法:
作为对link的参考,这里是解决方案
我在ScrollViewer的PointerEntered事件中禁用ScrollViewer VerticalScrollMode,以便将调用Grid Manipulation事件.操作完成后即在ManipulationCompleted事件中启用VerticalScrollMode
ScrollViewer scroolviewr;
private void ScrollViewer_PointerEntered(object sender, PointerRoutedEventArgs e)
{
scroolviewr = (sender as ScrollViewer);
(sender as ScrollViewer).VerticalScrollMode = ScrollMode.Disabled;
}
private void PageLayoutGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
e.Handled = true;
}
private void LayoutManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
scroolviewr.VerticalScrollMode = ScrollMode.Enabled;
var velocities = e.Velocities.Linear;
Double swipeLeftRight = velocities.X;
Double swipeUpDown = velocities.Y;
// A negative value means swiping to the left
if (swipeLeftRight < 0)
{
navigateToNextPage();
}
// a positive value is a swipe to the right.
else if (swipeLeftRight > 0)
{
navigateToPreviousPage();
}
}
<Grid ManipulationMode="TranslateX" ManipulationDelta="Grid_ManipulationDelta" ManipulationCompleted="Grid_ManipulationCompleted">
<ScrollViewer HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled" PointerEntered="ScrollViewer_PointerEntered">
.....
</ScrollViewer>
</Grid>
标签:windows-10-universal,win-universal-app,c 来源: https://codeday.me/bug/20191027/1941740.html