在WPF中同步两个RTF文本框滚动条

时间:2014-01-01 00:21:02

标签: c# wpf scrollbar

我已经研究过为富文本框同步滚动条的方法,但只有Winforms的解决方案或方法,但这些在WPF应用程序中不起作用。如果有人在WPF中做过这个并且可以提供一些方法/代码/指导如何实现这一点,我们将不胜感激。我是WPF的新手,所以欢迎任何帮助。感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用ScrollViewer.ScrollChanged路由事件来侦听滚动更改。例如:

<UniformGrid Rows="1" Width="300" Height="150" >
    <RichTextBox x:Name="_rich1" 
                 VerticalScrollBarVisibility="Auto"
                 ScrollViewer.ScrollChanged="RichTextBox_ScrollChanged" />
    <RichTextBox x:Name="_rich2" 
                 VerticalScrollBarVisibility="Auto"
                 ScrollViewer.ScrollChanged="RichTextBox_ScrollChanged" />
</UniformGrid>

然后,在事件处理程序中,您进行实际同步(代码中被this other answer启发而被盗):

private void RichTextBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
    var textToSync = (sender == _rich1) ? _rich2 : _rich1;

    textToSync.ScrollToVerticalOffset(e.VerticalOffset);
    textToSync.ScrollToHorizontalOffset(e.HorizontalOffset);
}