Прокрутка мыши FlowDocumentPageViewer позволяет перейти к следующим страницам, а не к прокрутке до конца страницы. - PullRequest
2 голосов
/ 09 сентября 2010

Я пытаюсь показать PrintPreview в режиме ActualSize, и у меня есть следующая структура в моем xaml: Проблема в том, что когда я прокручиваю мышь, вместо прокрутки до конца страницы, когда вы прокручиваете, а затем переходите на следующую страницу, если она есть, она непосредственно переходит на следующую страницу, а затем на последней странице прокручивается до конца как Вы продолжаете прокручивать мышью. Есть ли способ преодолеть эту проблему, не обрабатывая событие ScrollChanged ScrollViewer в коде позади?

1 Ответ

0 голосов
/ 04 октября 2011

Для этого вам нужно переопределить метод OnMouseWheel FlowDocumentPageViewer.Ниже приведен оригинальный код:

protected override void OnMouseWheel(MouseWheelEventArgs e)
{
    if (e.Delta != 0)
    {
        if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
        {
            if (e.Delta > 0)
            {
                this.IncreaseZoom();
            }
            else
            {
                this.DecreaseZoom();
            }
        }
        else if (e.Delta > 0)
        {
            base.PreviousPage();
        }
        else
        {
            base.NextPage();
        }
        e.Handled = false;
    }
    if (!e.Handled)
    {
        base.OnMouseWheel(e);
    }
}

В вашем коде вы должны сделать следующее:

public class MyPageViewer : FlowDocumentPageViewer
{
    protected override void OnMouseWheel(MouseWheelEventArgs e)
    {
        if (scroll_within_page_applicable())
        {
            scroll_within_page();
        }
        else
        {
            base.OnMouseWheel(e);
        }
    }
}
...