3
例如,Microsoft Word/PowerPoint 2010中的「縮放」控件的捕捉點值爲100%。如何在WPF中創建具有單個捕捉點的Slider控件?
我知道有可能通過設置刻度並使IsSnapToTickEnabled使其捕捉到特定的時間間隔,但在這裏不是這種情況,只有一個捕捉點,並且滑塊可以空閒其他值。
例如,Microsoft Word/PowerPoint 2010中的「縮放」控件的捕捉點值爲100%。如何在WPF中創建具有單個捕捉點的Slider控件?
我知道有可能通過設置刻度並使IsSnapToTickEnabled使其捕捉到特定的時間間隔,但在這裏不是這種情況,只有一個捕捉點,並且滑塊可以空閒其他值。
您可以嘗試一個ValueChanged
處理程序。
private void Slider_ValueChanged(
object sender,
RoutedPropertyChangedEventArgs<double> e)
{
var slider = sender as Slider;
var tick = slider.Ticks
.Where(xx => Math.Abs(e.NewValue - xx) < slider.LargeChange);
if (tick.Any())
{
var newValue = tick.First();
if (e.NewValue != newValue)
{
DispatcherInvoke(() => slider.Value = newValue);
}
}
}
的例子Slider
有以下設置:
<Slider Ticks="100.0"
Minimum="0.0"
Maximum="500.0"
Value="75.0"
SmallChange="1.0"
LargeChange="10.0"
ValueChanged="Slider_ValueChanged" />