2 Stimmen

FlowDocumentPageViewer Mausscroll navigiert zu den nächsten Seiten, anstatt zuerst zum Ende der Seite zu scrollen

Ich versuche, eine PrintPreview im ActualSize-Modus anzuzeigen, und ich habe die folgende Struktur in meinem Xaml: Das Problem ist, wenn ich mit der Maus scrollen, anstatt bis zum Ende der Seite zu scrollen, wie Sie scrollen und dann auf die nächste Seite navigieren, wenn überhaupt, es navigiert direkt auf die nächste Seite und dann auf der letzten Seite, es scrollt bis zum Ende, wie Sie mit der Maus weiter scrollen. Gibt es eine Möglichkeit, dieses Problem zu lösen, ohne das ScrollChanged-Ereignis des ScrollViewers im Code dahinter zu behandeln?

0voto

Ronald Wang Punkte 51

Um dies zu tun, müssen Sie die OnMouseWheel-Methode von FlowDocumentPageViewer. Nachfolgend finden Sie den Originalcode:

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

In Ihrem Code müssen Sie wie folgt vorgehen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X