Regler \ ScrollViewer-Element in einer touch-Oberfläche funktioniert nicht richtig
In WPF habe ich das folgende XAML-Code:
<ScrollViewer Canvas.Left="2266" Canvas.Top="428" Height="378" Name="scrollViewer1" Width="728" PanningMode="VerticalOnly" PanningRatio="2">
<Canvas Height="1732.593" Width="507.667">
<Slider Height="40.668" x:Name="slider1" Width="507.667" Style="{DynamicResource SliderStyle1}" Canvas.Left="15" Canvas.Top="150" />
</Slider>
</Canvas>
</ScrollViewer>
Es ist ein ScrollViewer-Element mit einem Schieberegler. Ich bin mit dem folgenden auf einem touch-screen, und ich bin mit dem panning auch das scrollen der ScrollViewer-Element vertikal. Wenn PanningMode="VerticalOnly" gesetzt ist, wird der regler nicht mehr funktioniert!
Ich gehe davon aus, dass die ScollViewer verbraucht die touch\schieben Ereignis-und Fehlerbehandlung, bevor Sie den regler tut (aber ich glaube, ich bin falsch auf dieser front).
Gibt es Abhilfe für dieses?
InformationsquelleAutor Bassem | 2011-12-03
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nur löste dieses Problem in unserer app.
Was passiert ist, dass der ScrollViewer-Element fängt die TouchDevice in seiner PreviewTouchMove handler, der "Stiehlt", die TouchDevice von anderen kontrolliert und verhindert, dass Sie vom Erhalt jeglicher PreviewTouchMove oder TouchMove-Ereignisse.
Um dies zu umgehen, müssen Sie die Implementierung eines benutzerdefinierten Steuerelements, die fängt die TouchDevice in der PreviewTouchDown Ereignis und speichert einen Verweis darauf, bis die PreviewTouchUp Ereignis Auftritt. Dann wird die Kontrolle "stehlen" kann das capture wieder in seine LostTouchCapture handler, wenn es angebracht ist. Hier einige kurze code:
Dann werden Sie brauchen, um re-Vorlage verwenden Sie den Schieberegler, um die CustomThumb anstelle der Standard-Thumb-Steuerelement.
ich strugled mit einem ähnlichen Problem. der workaround war das einer (keiner von den anderen arbeitete für mich): ich erstellt eine benutzerdefinierte Daumen, und dann habe ich es in einem scrollbar-Stil in xaml als "PART_Track" die Daumen.
Folgende für mich gearbeitet. Ich suchte eine lange Zeit für etwas, das funktionieren würde. Ich adaptierte diese für touch Wie man WPF-Schieberegler Folgen Sie den cursor von einem beliebigen Punkt aus. Dies ist ein viel einfacher zu beheben und ermöglicht es Ihnen, zu vermeiden, erstellen Sie eine benutzerdefinierte Schieberegler/thumb-Steuerelement.
IsMoveToPointEnable muss auf true gesetzt sein, damit dies funktioniert.
Dies ist schön und einfach und war für mich - obwohl es lohnt sich Verpacken in eine generische Funktion und die Ausweitung behandeln Sie den regler minimale Wert, auch wenn es nicht null sein können. Was für ein Schmerz, um zu tun, obwohl. Es gibt viele Ding über WPF, die sind cool, aber so viele einfache Dinge, die erfordern zusätzliche Schritte, die es wirklich können sich nachteilig auf die Produktivität.