我有一个带有ScrollViewer的Silverlight 4浏览器外应用程序,里面有几个RichTextBox。 RichTextBox仅用于显示文本,永远不会编辑,也不会滚动。
但是,当鼠标悬停在RichTextBox上时,鼠标滚轮事件似乎无法到达ScrollViewer。有没有办法克服这个限制?
答案 0 :(得分:3)
只读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',您应该很高兴。
好运,祝你好运 Jim McCurdy