Wie bekomme ich einen ScrollViewer mit einem Rechteck nach innen, um den Bildlauf zu stoppen, wenn das Ende des Rechtecks ​​erreicht ist?

9

Ich habe ein Rechteck in einem ScrollViewer wie diesem erstellt

%Vor%

Während der Verwendung der App ändert sich die Größe von MusicBg manchmal bis zu einer Breite von etwa 3.000 Pixeln.

%Vor%

Beim Scrolling des scrollViewers kann ich jedoch das Rechteck vollständig vom Bildschirm abrollen.

Zum Beispiel gibt mir diese Codezeile die folgenden Werte, wenn ich das Rechteck so weit verschoben habe, wie ich es verschieben möchte.

%Vor%

HorizontalOffset hat einen Wert von ~ 1200 und ScrollableWidth hat einen Wert von ~ 2900.

Wie kann ich das richtig machen, damit das Rechteck nicht vollständig vom Bildschirm gescrollt wird?

Ich würde erwarten, dass ein HorizontalOffset von etwa 1200 das Rechteck nur etwa zur Hälfte bis zum Ziel durchdringt und es nicht vom Bildschirm verschwindet.

ANTWORT:

Nach vielen Frustrationen konnte ich dieses Problem lösen, indem ich Canvas anstelle von Border oder Rectangle verwendete. Ich werde Punkte vergeben, wenn irgendjemand erklären kann, warum dieses Problem aufgetreten ist und ob es weniger Prozessor-intensive Kontrolle gibt, die besser funktioniert als Leinwand.

Bearbeiten: Screenshots:

Schlechter Code:

%Vor%

Bild von schlechtem Scroll mit falschem Code:

Guter Arbeitscode:

%Vor%

Gute Schriftrolle: Beachten Sie, dass es unten rechts 170 Sekunden statt der kleineren 118 Sekunden in der schlechten Schriftrolle gibt.

    
Bob 20.06.2012, 07:52
quelle

1 Antwort

1

Ich glaube, Ihr Recht, wp7 wird keine Formen rendern, die größer als 2048 Pixel sind. Der Grund dafür ist, dass die Seite so behandelt wird, als wäre sie größer als 2048, aber Sie können nur bis zu einer Breite von 2048 Pixel sehen und einfach zum "Geister" -Teil des Rechtecks ​​scrollen.

Ich bin mir nicht sicher, ob Sie das überschreiben können, aber die beste Lösung, die ich (ohne Überschreiben) finden könnte, besteht darin, Ihr Rechteck in Chucks zu zerlegen, die kleiner als 2000 sind (nur um sicher zu sein) und dann nahtlos anzuzeigen in einem horizontalen Stapelfeld im Scroll-Viewer. Das Problem dabei ist, dass diese Lösung, je nachdem, wie Sie sie codiert haben, schwer zu implementieren sein könnte. aber Sie können es vielleicht in Ihrem ViewModel aufteilen, wenn es angezeigt wird und Ihre Logik würde es nur als einen großen Brocken sehen.

    
methodMan 27.06.2012, 00:20
quelle

Tags und Links