Сделать ScrollViewer с Canvas внутри прокрутки плавно в коде - PullRequest
0 голосов
/ 19 апреля 2019

Как сделать так, чтобы ScrollViewer плавно прокручивал холст в коде (без xaml)?Как я знаю для xaml, для ScrollUnit нужно установить значение «Pixel», но я не могу сделать это в коде.

1 Ответ

0 голосов
/ 19 апреля 2019

Если то, что вы ищете, перемещает прокрутку на один пиксель при каждом повороте колеса мыши, вот способ.

Регистрация события предварительного просмотра колеса мыши.

<ScrollViewer Height="350" Width="525" PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
    <Canvas Height="650" Width="510">
        <Button Name="b" Height="30" Width="525" Content="Button text"/>
    </Canvas>
</ScrollViewer>

Переместите прокрутку на1 пиксель каждый раз, когда происходит событие, и установите его как обработанный.

private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
    ScrollViewer scrollViewer = sender as ScrollViewer;
    double offset = scrollViewer.VerticalOffset - Math.Sign(e.Delta);
    scrollViewer.ScrollToVerticalOffset(Math.Min(Math.Max(offset, 0), scrollViewer.ExtentHeight));
    e.Handled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...