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

Ski*_*a89 1 c# wpf scrollbar

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

Sph*_*xxx 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>
Run Code Online (Sandbox Code Playgroud)

然后,在事件处理程序中执行实际同步(代码 从...偷来的灵感来自其他答案):

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

    textToSync.ScrollToVerticalOffset(e.VerticalOffset);
    textToSync.ScrollToHorizontalOffset(e.HorizontalOffset);
}
Run Code Online (Sandbox Code Playgroud)