Answers:
简单的答案是您可以利用IsSnapToTickEnabled和TickFrequency属性。也就是说,将捕捉设置为刻度,并将刻度频率设置为1。
或者,换句话说,就是……利用刻度线……但是您不必一定要显示要捕捉的刻度线。
查看以下xaml:
<Slider
Orientation="Vertical"
Height="200"
Minimum="0"
Maximum="10"
Value="0"
IsSnapToTickEnabled="True"
TickFrequency="1"
/>
捕捉技巧很方便,但是有局限性,例如,如果您只想显示有效滴答的子集。我在两种选择上都取得了成功:绑定到整数或舍入新值。这是一个组合的示例:
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 。