Ich habe eine Windows 8 Store App mit C#/XAML erstellt. Meine Oberfläche enthält eine scrollbare Liste, die mit einem ScrollViewer
gerendert wird. Ich möchte Manipulationsereignisse auf den Elementen innerhalb der Liste behandeln können, aber die Einstellung auf etwas anderes als None
auf dem Listenelement bewirkt, dass meine Liste nicht mehr scrollt.ScrollViewer und Umgang mit Manipulationsereignissen auf untergeordneten Elementen
Hier ist eine vereinfachte Version der Benutzeroberfläche:
<ScrollViewer>
<Border/> <!-- these contain child content -->
<Border/>
<Border/>
<!-- Set ManipulationMode on an element in order to receive manipulation events -->
<!-- This causes the scroll viewer to stop working! -->
<Border ManipulationMode="All"
ManipulationDelta="..."/>
<Border/>
<Border/>
</ScrollViewer>
Ich verstehe, dass der WinRT ScrollViewer
eine spezielles ManipulationMode
von System
aus Leistungsgründen verwendet, aber ich würde eine vertikal scrollen Liste haben mag, Elemente enthält, reagieren auf horizontale Manipulation/Gesten. Kann jemand an einen kreativen Workaround denken, der dies ermöglicht?
Wow - das ist eine Menge Arbeit. Sie kümmern sich also im Prinzip selbst um den ScrollViewer? Bedeutet das, dass Sie auch eigene Trägheitsberechnungen durchführen müssen, damit es natürlich scrollt? Oder macht es das automatisch, wenn Sie den vertikalen Offset ändern? – ColinE
Manipulationen in Jupiter haben eingebaute Trägheit standardmäßig aktiviert, so dass Sie das abdecken. Sie müssen nur sicherstellen, dass Sie den ScrollContentPresenter nicht am Ende der Liste zerquetschen, wenn das Scrollen aufgrund von Trägheit geschieht. Die Manipulationen sind normalerweise ziemlich flüssig, aber Sie könnten wahrscheinlich ScrollViewer-Animationen wie die aus dem [WinRT XAML Toolkit] (http://bit.ly/WinRTXamlToolkit) verwenden, um das Scrollen bei Verwendung des Scrollrads zu glätten. Übrigens, ich habe vergessen zu erwähnen, dass Sie vielleicht auch den Fokus auf Elemente einstellen möchten, wenn Sie auf das Overlay tippen ... :) –
@Coline Prüfe meine Antwort auf [diese Frage] (http: // stackoverflow.com/questions/14153038/how-to-allow-Manipulationen-in-listview-gridview-item-Steuerelemente-While-Erlauben/14161596 # 14161596) für eine andere Lösung. –