2011-01-20 21 views
3

たとえば、Microsoft Word/PowerPoint 2010の「ズーム」コントロールには、値100%のスナップポイントがあります。WPFで単一のスナップポイントを持つSliderコントロールを作成するにはどうすればよいですか?

ティックを設定して特定の間隔でスナップする可能性があり、IsSnapToTickEnabledを有効にする可能性があることは知っていますが、ここではそうではありません。スナップポイントが1つあり、その他の値。

答えて

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" /> 
関連する問題