回答:
目盛りを正しい方法で設定すると、IsSnapToTickEnabledを使用できます。これはかなりうまくいきました。詳細については、MSDNを参照してください。
簡単な答えは、あなたがを活用することでIsSnapToTickEnabledとTickFrequencyプロパティ。つまり、ティックへのスナップをオンにし、ティックの頻度を1に設定します。
または、言い換えると...ティックを利用します...しかし、スナップしているティックを表示する必要はありません。
次のxamlを確認してください。
<Slider
Orientation="Vertical"
Height="200"
Minimum="0"
Maximum="10"
Value="0"
IsSnapToTickEnabled="True"
TickFrequency="1"
/>
スナップトリックは便利ですが、有効なティックのサブセットのみを表示する場合など、制限があります。私は2つの選択肢で成功しました。整数にバインドするか、新しい値を丸めるかのどちらかです。これを組み合わせた例を次に示します。
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"/>
どちらのパフォーマンスがスナップトリックと比較できるかはわかりませんが、問題はありませんでした*。
* スライダーの値をテキストフィールドのタイプにもバインドすると、マウスを使用している場合はテキストフィールドに小数が表示されることがあります。同時にintにもバインドすると、空の文字列によって変換例外がスローされ、UIが一時的に停止します。これらの問題は私が解決策を探すほど深刻ではありませんでした。
Ticks
値(0、10、20 、...)だけですが、その間にあるすべての値(1、2、...)は有効で、矢印キーなどで選択できます。
IsSnapToTickEnabled
プロパティがないSilverlightで機能します。