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