2011-01-20 44 views
3

例如,Microsoft Word/PowerPoint 2010中的「縮放」控件的捕捉點值爲100%。如何在WPF中創建具有單個捕捉點的Slider控件?

我知道有可能通過設置刻度並使IsSnapToTickEnabled使其捕捉到特定的時間間隔,但在這裏不是這種情況,只有一個捕捉點,並且滑塊可以空閒其他值。

回答

0

您可以嘗試一個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" /> 
相關問題