2009-06-17 6 views
2

Ich habe einen Schieberegler mit Minimalwert und maximalen Wert .Wie kann ich ein XAML-Slider-Element nur an erlaubten Werten einrasten lassen?

Wenn ich es derzeit verschiebe, wird der Wert auf einen Dezimalwert zwischen 0 und 1 gesetzt, z. 0.2342343.

Allerdings habe ich den Wert will nur entweder 0 oder 1 sein (so, dass meine Viewmodel-Eigenschaft wird die Änderung nur registrieren, wenn es 0 oder 1 ist und nicht mehrfach, wenn der Benutzer es von 0 auf 1 schleppt) .

Wie kann ich den Schieberegler Wert nur 0 oder 1? Ich habe versucht SmallChange, LargeChange und SnapsToDevicePixels, aber keiner von diesen funktioniert.

<Slider Name="TheLanguageIndexSlider" 
     DockPanel.Dock="Bottom" 
     Minimum="0" 
     Maximum="1" 
     LargeChange="1" 
     SmallChange="1" 
     SnapsToDevicePixels="True" 
     Width="100" 
     Margin="5" 
     Value="{Binding LanguageIndex}" 
     HorizontalAlignment="Left"/> 

Antwort

8

Stellen Sie die IsSnapToTickEnabled auf true und einen Wert von 1 zu der TickFrequency Eigenschaft zuweisen:

<Slider IsSnapToTickEnabled="True" 
     Maximum="1" /> 
2

von msdn

<Slider Width="100" Value="50" Orientation="Horizontal" HorizontalAlignment="Left" 
    IsSnapToTickEnabled="True" Maximum="3" TickPlacement="BottomRight" 
    AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" 
    Ticks="0, 1.1, 2.5, 3"/> 

In Ihrem Fall:

<Slider Name="TheLanguageIndexSlider" 
    IsSnapToTickEnabled="True" 
    Ticks="0, 1" 
    DockPanel.Dock="Bottom" 
    Minimum="0" 
    Maximum="1" 
    LargeChange="1" 
    SmallChange="1" 
    SnapsToDevicePixels="True" 
    Width="100" 
    Margin="5" 
    Value="{Binding LanguageIndex}" 
    HorizontalAlignment="Left"/>