只讀RichTextBox不滾動的原因是因爲RichTextBox的默認模板使用ScrollViewer而不是ContentControl。所以爲了解決這個問題,你需要爲RichTextBox創建自己的模板。
我所做的是在Blend中創建一個RichTextBox模板的副本,並將其剝離爲只讀情況。這消除了約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'es,你應該是好去。
Goood運氣,
吉姆·麥柯迪
面對面軟件和YinYangMoney