2013-05-07 88 views
2

在XAML中,我已經設置了一個網格,含有的ScrollViewer,含有文本框:WPF ScrollViewer - 「頁面向上/向下」鍵一直到開始/結束?

<Window x:Class="Test.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" Loaded="MainWindow_OnLoaded"> 
    <Grid> 
     <ScrollViewer> 
      <TextBox Name="TempTextBox" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"></TextBox> 
     </ScrollViewer> 
    </Grid> 
</Window> 

然後I(編程在C#)加入一串文本到文本框。許多線路。大多數情況下,垂直滾動按我的預期工作:我可以單擊並拖動滾動條grabberthing;我可以點擊抓取上方或下方的滾動條;我可以使用向上和向下箭頭鍵;我可以使用Ctrl-Home和Ctrl-End。所有這一切都很好。但是:

如果我使用Page Up或Page Down鍵,就好像我使用了Ctrl-Home或Ctrl-End。也就是說,它會到達文本的頂部或底部,而不是上下一頁。

我做錯了什麼?我很確定這不是一個像「你的Ctrl鍵被卡住」的問題,因爲Page Up和Page Down可以在我的電腦上的其他應用程序中正常工作。

回答

5

刪除ScrollViewer。

TextBox支持滾動支持,它不需要這個虛擬控件'ScrollViewer'來滾動。在你的TextBox中設置ScrollViewer.VerticalScrollBarVisibility =「Auto」,但不要用ScrollViewer包裝你的TextBox,你很好。

您提供了兩個互相沖突的滾動可能性。

我有一個TextBox與ScrollViewer.VerticalScrollBarVisibility =「自動」沒有ScrollViewer和Page Up和Page Down工作正常。

爲了測試,我在我的'TextBox'周圍添加了'ScrollViewer',然後它開始顯示與您所述相同的問題。

+0

這很好用 - 謝謝! – user2350774 2013-05-07 12:39:15

1

就我而言,我使用RichTextBox的,因爲我有另一個功能通過ScaleTransform放大RichTextBox的規模,我不能使用RichTextBox的原來的滾動條,

如果我使用的RichTextBox原來的滾動條,滾動條的大小也會放大,我想避免它,所以我放棄使用RichTextBox的原始滾動條 ,然後轉而使用不會調整大小的ScrollViewer的ScrollBar。

而且,我解決了Page Up/Down keys goes all the way to the start/end Problem的方式,

是寫上一頁/下一頁行動在RichTextBox中的PreviewKeyDown事件:

richTextBox.PreviewKeyDown += (sender2, e2) => 
{ 
    if (e2.Key == Key.PageUp) 
    { 
     richTextBox.Focus(); 
     //Use Code to Scroll Up 6 Lines 
     for (int j = 0; j < 6; j++) 
      EditingCommands.MoveUpByLine.Execute(null, richTextBox); 
     e2.Handled = true; 
    } 
    if (e2.Key == Key.PageDown) 
    { 
     richTextBox.Focus(); 
     //Use Code to Scroll Down 6 Lines 
     for (int j = 0; j < 6; j++)  
      EditingCommands.MoveDownByLine.Execute(null, richTextBox); 
     e2.Handled = true; 
    } 
}; 

我的帖子的啓發WPF Datagrid page up and page down event handling manually

相關問題