최소값 = 0이고 최대 값 = 50 인 WPF 슬라이더가 있습니다. 간격을 5로하여 눈금을 표시하고 싶습니다. 슬라이더를 1 간격으로 스냅합니다. 이것이 가능합니까?WPF 슬라이더의 값으로 스냅하는 방법 일부의 눈금 표시 방법
답변
속성 Interval
은이 동작에 영향을주지 않습니다.
사용이 :
<Slider TickFrequency="5" IsSnapToTickEnabled="True" />
<Slider TickPlacement="TopLeft" Minimum="0" Maximum="50" TickFrequency="5" IsSnapToTickEnabled="False" SmallChange="1" />
비활성화 IsSnapToTickEnabled="False"
와 진드기에 스냅 및 SmallChange="1"
을 설정합니다.
SmallChange는 엄지를 끌거나 화살표 키를 누를 때 증가량을 결정합니다. 사용자가 슬라이더를 클릭 할 때 증가량을 제어 할 수도 있습니다 (엄지 손가락이 아님). 엄지 손가락을 점프하려면 LargeChange="10"
을 사용하여 10 단위 이동하십시오. 슬라이더를 사용자가 클릭 한 곳으로 이동하려면 IsMoveToPointEnabled="True"
을 사용하십시오. 참고로 IsMoveToPointEnabled는 엄지 손가락을 가장 가까운 SmallChange 증분에 배치합니다.
'SmallChange'는 엄지 드래그에 전혀 영향을 미치지 않습니다. 그래서이 해결책은 효과가 없습니다. –
일반 WPF Slider
은 눈금을 모두 표시하거나 전혀 표시하지 않을 수 있습니다.
이 제한 사항을 해결하려면 직접 Slider
을 만들거나 트릭을 사용할 수 있습니다. Slider
의 TickBar
을 사용하지 않도록 설정하고 나만의 것을 그립니다.
<StackPanel>
<TickBar Maximum="{Binding Path=Maximum, ElementName=MySlider}"
Minimum="{Binding Path=Minimum, ElementName=MySlider}" TickFrequency="5" Height="4"
Fill="Black" ReservedSpace="11" />
<Slider Name="MySlider" Maximum="50" TickPlacement="None" IsSnapToTickEnabled="True" />
</StackPanel>
ReservedSpace
정확히 Thumb
의 폭과 동일한 최 외측 틱 좌우로 조합 된 공간이다. 대개 11 픽셀입니다. 특이한 주제를 사용하거나 다른 방식으로 혼란에 빠지면 새로운 TickBar
에서도 조정해야합니다.
이 솔루션에는 단점이 있습니다. Slider
은 눈금이 없다고 생각하기 때문에 Thumb
은 뾰족하지 않습니다. 당신의 Window
의 생성자
<StackPanel>
<TickBar Maximum="{Binding Path=Maximum, ElementName=MySlider2}"
Minimum="{Binding Path=Minimum, ElementName=MySlider2}" TickFrequency="5"
Height="4" Fill="Black" ReservedSpace="11" />
<Slider Name="MySlider2" Maximum="50" TickPlacement="TopLeft"
IsSnapToTickEnabled="True"/>
</StackPanel>
그리고 다음을 (InitializeComponent()
후) : 당신이 Thumb
이 뾰족한 싶은 경우에, 당신은 그에게 TickBar
를 제공함으로써 Slider
을 속여 다음 나중에 축소해야
this.Loaded += (sender, e) =>
{
var sliderTickBar = (MySlider2.Template.FindName("TopTick", MySlider2) as
System.Windows.Controls.Primitives.TickBar);
sliderTickBar.Visibility = Visibility.Collapsed;
};
Ticks 속성을 설정하고 IsSnapToTickEnabled를 false로 설정하고 슬라이더 값의 바인딩을 반올림하여 원하는 틱만 표시하여 동일한 문제를 해결했습니다. 예제에서는 슬라이더를 0에서 100 %로 표시하고 틱을 5 % 씩 표시하고 스냅 단계를 1 %로 표시하려고합니다.
XAML :
<Slider Minimum="0" Maximum="100"
TickPlacement="BottomRight" Ticks="{Binding PercentTicks}"
TickFrequency="1" SmallChange="1" LargeChange="5"
Value="{Binding MyProperty, Converter={StaticResource PercentageConverter}}" />
보기 모델 :
public double MyProperty
{
get { return myProperty; }
set
{
myProperty = Math.Round(value, 2);
OnPropertyChanged();
}
}
myProperty는 0 내지 1의 값을 가지므로 두 자리로 반올림하여 정확히 1 % 단계 준다! 눈금을 5 % 단위로 설정하면 뷰 모델의 생성자에서 수행됩니다.
var ticks = new DoubleCollection();
for (int i = 0; i <= 100; i+=5)
{
ticks.Add(i);
}
PercentTicks = ticks;
- 1. NSWindow를 그리드에 스냅하는 방법
- 2. WPF/Silverlight Slider 컨트롤 눈금 번호 표시
- 3. 레이블에 눈금 기호 표시
- 4. QTree에서 눈금 표시 그리기
- 5. deCarta DDS에서 RMAN보다 먼저 스냅하는 방법?
- 6. 다각형을 "스냅하는"
- 7. 슬라이더의 썸을 찾아 폭을 설정하는 방법
- 8. Flot에서 선 그래프의 눈금 레이블을 삽입하는 방법
- 9. Silverlight에서 슬라이더의 엄지 위로 현재 시간 표시
- 10. WPF 진행 표시 줄을 사용하는 방법?
- 11. WPF 이미지 : 파일에서 이미지 표시, 방법?
- 12. jquery 슬라이더의 플러그인 또는 예제가 적절하게 나눌 수없는 값으로 작동합니까?
- 13. WPF ComboBox를 사용자 정의 값으로 편집 가능하게 만드는 방법
- 14. WPF : XAML에서 코드의 변수를 속성 값으로 사용하는 방법?
- 15. 눈금 컨트롤의 좌표계 문제
- 16. 레일 십진수 정밀도 및 눈금
- 17. canvas 객체 일부의 getDataURL
- 18. 구조체 일부의 memcpy
- 19. WPF/Silverlight 응용 프로그램의 일부의 DPI를 변경하는 방법은 무엇입니까?
- 20. applicationIconBadgeNumber - 빈 값으로 표시하는 방법?
- 21. XMLGregorianCalendar를 새 값으로 재설정하는 방법
- 22. Devexpress.LookUpEdit을 설정 값으로 채우는 방법?
- 23. 필드 값으로 스크립트를 추가하는 방법?
- 24. 값으로 컨테이너 클래스에 복사하는 방법?
- 25. 배열에서 값으로 키를 바꾸는 방법?
- 26. 그래프 축의 눈금 알고리즘
- 27. 의 값으로 ActualWidth WPF 애니메이션에서
- 28. 자동 이미지 슬라이더의 테두리에 둥근 모서리를 유지하는 방법
- 29. jQuery 모바일에서 슬라이더의 값을 변경/POST 할 때 POST하는 방법?
- 30. jquery 또는 css를 사용하여 슬라이더의 배경색을 변경하는 방법
이것은 작동하지 않습니다. 이제 다른 주파수에서 스냅 한 다음 5를 스냅 할 수 없습니다. –