Причина, по которой RichTextBox только для чтения не прокручивается, заключается в том, что шаблон по умолчанию для RichTextBox использует ScrollViewer вместо ContentControl. Поэтому, чтобы решить проблему, вам нужно создать собственный шаблон для RichTextBox.
Я создал копию шаблона RichTextBox в Blend и удалил ее для случая только для чтения. Это удаляет около 90% шаблона. Остается следующий стиль / шаблон:
<Style TargetType="c:RichTextBlock">
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid x:Name="RootElement">
<Border x:Name="Border" CornerRadius="0"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding Padding}"
>
<ContentControl x:Name="ContentElement" IsTabStop="False" />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Используйте этот стиль / шаблон для чтения только RichTextBox'ы, и вы должны быть в порядке.
Боже мой,
Джим МакКарди
Face to Face Software и YinYangMoney