Je suis en train de montrer un PrintPreview en mode ActualSize et j'ai la structure suivante dans mon XAML: Le problème est quand je souris défile, au lieu de faire défiler à la fin de la page que vous faites défiler et ensuite naviguer à la page suivante le cas échéant, il navigue directement à la page suivante, puis sur la dernière page, il défile jusqu'à la fin défilement avec votre souris. Existe-t-il un moyen de résoudre ce problème sans gérer l'événement ScrollChanged du ScrollViewer dans le code derrière?FlowDocumentPageViewer défilement de la souris navigue vers les pages suivantes au lieu de faire défiler jusqu'à la fin de la première page
2
A
Répondre
0
Pour ce faire, vous devrez remplacer la méthode OnMouseWheel de FlowDocumentPageViewer. Ci-dessous le code d'origine:
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);
}
}
Dans votre code, vous devez faire comme ci-dessous:
public class MyPageViewer : FlowDocumentPageViewer
{
protected override void OnMouseWheel(MouseWheelEventArgs e)
{
if (scroll_within_page_applicable())
{
scroll_within_page();
}
else
{
base.OnMouseWheel(e);
}
}
}