2008-10-06 9 views

Antwort

82

Wenn Sie Ihre Striche in der richtigen Weise einstellen, können Sie IsSnapToTickEnabled verwenden. Das hat sehr gut für mich funktioniert. Details finden Sie unter MSDN.

136

Die einfache Antwort ist, dass Sie die Vorteile der IsSnapToTickEnabled und TickFrequency Eigenschaften nehmen. Das heißt, das Fangen an Ticks einschalten und die Tick-Frequenz auf 1 setzen.

Oder mit anderen Worten ... Nutzen Sie Ticks ... aber Sie müssen nicht unbedingt die Ticks anzeigen, die Sie fangen zu.

Überprüfen Sie das folgende Stück XAML aus:

<Slider 
    Orientation="Vertical" 
    Height="200" 
    Minimum="0" 
    Maximum="10" 
    Value="0" 
    IsSnapToTickEnabled="True" 
    TickFrequency="1" 
/> 
+1

Diese Antwort sollte die akzeptierte sein. Klappt wunderbar. Danke – Ashbay

+0

Dank @Ashbay ... zu der Zeit wollte ich jemand anderen Kredit für die Antwort geben ... anstatt nur meine eigene Antwort als akzeptiert zu markieren. – cplotts

42

Für jene, die spezifischen Positionen schnappen möchten, können Sie auch die Ticks Eigenschaft:

<Slider Minimum="1" Maximum="500" IsSnapToTickEnabled="True" Ticks="1,100,200,350,500" /> 
8

Der Schnapp Trick praktisch ist, sondern hat seine Grenzen, wenn Sie zum Beispiel eine Teilmenge zeigen wollen nur gültiger Ticks. Ich hatte Erfolg mit zwei Alternativen: entweder an eine ganze Zahl binden oder den neuen Wert runden. Hier ist ein kombiniertes Beispiel:

public int MyProperty { get; set; } 

private void slider1_ValueChanged(object sender, 
    RoutedPropertyChangedEventArgs<double> e) 
{ 
    (sender as Slider).Value = Math.Round(e.NewValue, 0); 
} 

<Slider 
    Name="slider1" 
    TickPlacement="TopLeft" 
    AutoToolTipPlacement="BottomRight" 
    ValueChanged="slider1_ValueChanged" 
    Value="{Binding MyProperty}" 
    Minimum="0" Maximum="100" SmallChange="1" LargeChange="10" 
    Ticks="0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100"/> 

Ich habe keine Ahnung, wie die Leistung von entweder vergleichbar mit dem Schnapp Trick, aber ich habe keine Probleme * habe.

* Wenn Sie auch binden Sie den Wert des Schiebereglers auf eine Art von Textfeld werden Sie feststellen, dass hin und wieder, wenn Sie die Maus verwenden, zeigt das Textfeld Dezimalzahlen. Wenn Sie gleichzeitig auch an ein int binden, führt die leere Zeichenfolge dazu, dass eine Konvertierungsausnahme ausgelöst wird, die die Benutzeroberfläche kurzzeitig blockiert. Diese Probleme waren nicht schwer genug, um nach Lösungen zu suchen.

+0

Kann der Benutzer also auch die anderen Werte auf dem Schieberegler haben? Oder erlaubt es immer nur den Wert der Ticks zu wählen. Eine Art seltsame Frage ... hoffentlich verstehst du, was ich frage. – JLott

+1

@JLott: Sie können immer noch nur die "Ticks" -Werte (0, 10, 20, ...) fangen, aber alle Werte dazwischen (1, 2, ...) sind gültig und können z. Pfeiltasten. – mkjeldsen

+0

Oh ordentlich. Ich habe das nicht bemerkt ... Danke! – JLott