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?
Antwort
Zu viele Anzeigen?
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);
}
}
}