2013-07-07 7 views
5

Arbeit habe ich diese Slider in WPF:Slider nicht mit Berührungseingabe

<Slider x:Name="SizeSlider" IsManipulationEnabled="True" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged"></Slider> 

Ich kann der Schieber den Cursor mit der Maus ziehen, aber nicht mit Berührungseingabe.

Was muss ich tun, um den Schieberegler mit Touch-Eingabe zu verwenden?

Antwort

4

So fand ich die Lösung, dank dem Link von Agentlien zur Verfügung gestellt.

In XAML, fügen Sie ein Touchdown-Attribut:

<Slider x:Name="SizeSlider" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged" TouchDown="SizeSlider_TouchDown"/> 

(Ich entfernte auch die IsManipulationEnabled Eigenschaft, da es hier nicht notwendig ist)

In C# -Code-behind:

private void SizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    // Things you want to do everytime slider's value change 
    // For example : 
    _brushSize = e.NewValue; 
} 


private void SizeSlider_TouchDown(object sender, TouchEventArgs e) 
{ 
    // Mark event as handled 
    e.Handled = true; 
} 

Auf diese Weise kann der Schieberegler sowohl mit der Maus als auch mit der Touch-Eingabe verwendet werden.

+0

Da diese Lösung dein Problem behebt, solltest du sie als akzeptierte Antwort wählen , damit die Leute wissen, wo sie suchen müssen. – Agentlien

+0

Danke, mich zu erinnern! Ich konnte vorher nicht, weil ich noch 1 Tag warten musste :) und nochmals vielen Dank für deine Hilfe! –

+0

Sie sind herzlich willkommen. :) Es ist immer schön, helfen zu können. Zufällig hatte ich gerade mit einem ähnlichen Problem zu kämpfen, als meine Google-Suche sowohl den von mir angegebenen Link als auch einen Link zu dieser Frage enthielt. Also dachte ich mir, dass ich die beiden am besten verbinde. – Agentlien

3

Es sieht für mich wie Sie aus der Ausgabe hier beschrieben leiden kann:

http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html

Kurz: IsManipulationEnabled beeinflusst, ob das Berührungsereignis eine Maus erzeugt oder nicht, wenn das Berührungsereignis ist nicht behandelt, so müssen Sie sicherstellen, dass das richtige Ereignis behandelt wird.

+0

Vielen Dank! Mit dem von Ihnen angegebenen Link konnte ich mein Problem lösen. Es ging jedoch nicht um die IsManipulationEnabled-Eigenschaft. Ich werde meine eigene Antwort hinzufügen, aber da Ihre auch hilfreich war, werde ich sie so schnell wie möglich verbessern (> 15 Wiederholungen). –

+0

@ MichaëlPolla Du bist jetzt über 15 Jahre alt. – Undo

+0

@Undo: fertig! ... lustiger Spitzname übrigens :-D Zuerst habe ich nicht verstanden, warum ich einen Kommentar "rückgängig machen" konnte ... hehe –