2010-09-08 1 views
2

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

ответ

0

Для этого вам необходимо переопределить метод 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); 
     } 
    } 
} 
Смежные вопросы