我有一个 Silverlight 4 浏览器外应用程序,其中有一个 ScrollViewer,里面有几个 RichTextBoxes。RichTextBoxes 仅用于显示文本,从不编辑,从不滚动。
但是,当鼠标悬停在 RichTextBox 上时,鼠标滚轮事件似乎无法到达 ScrollViewer。有没有办法克服这个限制?
我有一个 Silverlight 4 浏览器外应用程序,其中有一个 ScrollViewer,里面有几个 RichTextBoxes。RichTextBoxes 仅用于显示文本,从不编辑,从不滚动。
但是,当鼠标悬停在 RichTextBox 上时,鼠标滚轮事件似乎无法到达 ScrollViewer。有没有办法克服这个限制?
只读 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,您应该很高兴。
祝你好运,
Jim McCurdy
Face to Face Software 和 YinYangMoney