Ich verwende das ViewportControl zum Scrollen und Vergrößern und Verkleinern meiner Map. In dieser Karte habe ich eine grüne Ellipse, um die ich mich bewegen möchte. Zuvor habe ich einen ScrollViewer verwendet, bei dem ich den manipulationsMode des ScrollViewers zur Steuerung anwendete und damit meine Ellipse bewegen konnte. Ich kann jedoch eine ähnliche Methode für das ViewportControl nicht finden. Gibt es eine Möglichkeit, meine Ellipse zu bewegen?Objekt in ViewportControl WP8 verschieben
Der Code, den ich so weit habe:
XAML Teil, wo ich meinen ViewportControl um meine Karte
<ViewportControl x:Name="ViewPortTestTest" Bounds="0,0,1271,1381.5" Height="480" Width="800" Canvas.ZIndex="1" Grid.Row="1">
<ViewportControl.RenderTransform>
<CompositeTransform x:Name="myTransformTest"/>
</ViewportControl.RenderTransform>
<View:Map x:Name="ZoomableContent" >
<View:Map.RenderTransform>
<CompositeTransform x:Name="myTransform" />
<!-- ScaleX="{Binding Map.imageScale}" ScaleY="{Binding Map.imageScale}"/>-->
</View:Map.RenderTransform>
</View:Map>
</ViewportControl>
Es ist in der Karte, wo ich die Ellipse hinzufügen. Das Ansichtsmodell, wo ich meine Ellipse manipulieren
public void ManStart(ManipulationStartedEventArgs e)
{
e.Handled = true;
ViewportControl VP = FindParentOfType<ViewportControl>(ChampViewModelSel);
}
}
public void ManDelta(ManipulationDeltaEventArgs e)
{
e.Handled = true;
Point fingerPosition = e.DeltaManipulation.Translation;
Temp.x = fingerPosition.X;
Temp.y = fingerPosition.Y;
}
}
Wo Temp.x und Temp.y die neue Position der Ellipse ist.
Nicht sicher, ob ich das Recht verstehe, aber wenn ich meinen Finger ziehe, scrollt das ViewportControl nicht, während ich meinen Finger schleppe? oder welcher Teil stellt sicher, dass das ViewportControl nicht scrollt? – JonasN89
@ JonasN89 Sie haben Recht, dass die erste Version das Scrollen nicht verhindern wird. Es hat einige Zeit gedauert, bis ich einen Weg gefunden habe, wie man einen "gesperrten" Viewport erreichen kann - es ist nicht so einfach wie es scheint. Ich habe einen kleinen "Hack" ausprobiert, den Sie in meiner bearbeiteten Antwort sehen können. – Romasz
Ich habe versucht, Ihre Idee zu implementieren, aber anscheinend schneidet sie den Bildschirm nicht richtig ab. Ich habe versucht, die Grenzen zu betrachten, und es scheint nicht, als ob es die Spitze oder die Linke benutzt, irgendeine Hilfe? – JonasN89