답변:
간단한 대답은 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에서 작동 합니다.