FlowDocumentPageViewer鼠标滚动导航到下一页,而不是首先滚动到页面的末尾

时间:2010-09-08 23:49:09

标签: wpf flowdocument

我试图在ActualSize模式下显示PrintPreview,我的xaml中有以下结构: 问题是当我鼠标滚动时,而不是在滚动时滚动到页面的末尾,然后导航到下一页(如果有的话),它直接导航到下一页然后在最后一页上滚动到结尾你继续用鼠标滚动。 有没有办法克服这个问题而不在后面的代码中处理ScrollViewer的ScrollChanged事件?

1 个答案:

答案 0 :(得分:0)

要执行此操作,您需要覆盖FlowDocumentPageViewer的OnMouseWheel方法。以下是原始代码:

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);
        }
    }
}