Ich verwende eine translateX-Manipulation in meiner App. aber wenn ich es in einem Scrollviewer verwenden möchte, funktioniert der Scrollviewer nicht mehr und scrollt nicht (ich brauche die vertikale Schiene). Was zu tun ist, um es zu beheben. MyXAML Code:UWP: Manipulation in einem Scrollviewer
<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>
Und mein C# Code-Behind:
#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
Sie können nicht ... zumindest nicht, dass ich bewusst bin. Sobald Sie den Wert von 'ManipulationsMode' auf etwas anderes als' System' ändern, schalten Sie die direkte Bearbeitung des 'ScrollViewers' aus. – Laith