C# UWP:滚动查看器中的操作
我正在我的应用程序中使用translateX操作。但是当我想在scrollviewer中使用它时,scrollviewer会停止工作而不滚动(我需要垂直导轨)。 如何修复它。 MyXAML代码:C# UWP:滚动查看器中的操作,c#,xaml,scroll,uwp,swipe,C#,Xaml,Scroll,Uwp,Swipe,我正在我的应用程序中使用translateX操作。但是当我想在scrollviewer中使用它时,scrollviewer会停止工作而不滚动(我需要垂直导轨)。 如何修复它。 MyXAML代码: <ScrollViewer> <Grid x:Name="MainGrid" Background="{ThemeResource AppBackgroundColor}" ManipulationMode="TranslateX" Manipulation
<ScrollViewer>
<Grid x:Name="MainGrid" Background="{ThemeResource AppBackgroundColor}"
ManipulationMode="TranslateX" ManipulationDelta="MainGrid_ManipulationDelta" ManipulationCompleted="MainGrid_ManipulationCompleted"
ManipulationStarted="MainGrid_ManipulationStarted"
>
<ContentControl Content="{x:Bind TheGrid,Mode=OneWay}"/>
<Grid.RenderTransform >
<TranslateTransform x:Name="myScaleTransform" />
</Grid.RenderTransform>
</Grid>
</ScrollViewer>
还有我的C#代码隐藏:
#region Manipulations
private void MainGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
if (myScaleTransform.X >= 60 && e.Delta.Translation.X > 1)
{
myScaleTransform.X = 60;
return;
}
if (myScaleTransform.X <= -180 && e.Delta.Translation.X < 1)
{
myScaleTransform.X = -180;
return;
}
myScaleTransform.X += e.Delta.Translation.X;
lastPostition.X += e.Delta.Translation.X;
}
private void MainGrid_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
if (myScaleTransform.X <= -170 ) return;
urStoryboard.Begin();
}
private void MainGrid_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
startpoint = e.Position;
lastPostition = e.Position;
}
}
#endregion
#区域操作
私有void MainGrid_操纵delta(对象发送方,操纵deltaroutedventargs e)
{
如果(myScaleTransform.X>=60&&e.Delta.Translation.X>1)
{
myScaleTransform.X=60;
返回;
}
if(myScaleTransform.X不幸的是,如果ScrollViewer
同时需要滚动和手势,则没有好的解决方案。如果要处理用户手势,则必须禁用DirectManipulation
,这也会禁用滚动。
有一篇文章讨论了这个问题,你应该阅读以了解更多。我解决了它。
我的代码:
你不能…至少我不知道。一旦你将操作模式
的值更改为除系统
以外的任何值,你就可以关闭滚动查看器
上的直接操作。谢谢!这对我来说非常有用,因为我已经尝试了许多不同的方法来实现它。
ManipulationMode="TranslateX,System"