只读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,使用这种样式/模板,您应该可以继续使用。
祝你好运,
吉姆麦克寇迪
面对面软件和银阳钱