Как сделать элемент управления Slider в WPF с одной точкой привязки? - PullRequest
3 голосов
/ 20 января 2011

Например, элемент управления «Масштаб» в Microsoft Word / PowerPoint 2010 имеет точку привязки со значением 100%.

Я знаю, что есть возможность привязать его к определенным интервалам путем установки тиков,и включение IsSnapToTickEnabled, но здесь это не тот случай, когда существует одна точка привязки, и ползунок может освободиться для других значений.

1 Ответ

0 голосов
/ 20 января 2011

Вы можете попробовать обработчик 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...