【问题标题】:Silverlight 4 - Mousewheel stops scrolling ScrollViewer when over contained RichTextBoxSilverlight 4 - 鼠标滚轮在包含 RichTextBox 时停止滚动 ScrollViewer
【发布时间】:2026-02-23 03:35:01
【问题描述】:
我有一个 Silverlight 4 浏览器外应用程序,其中有一个 ScrollViewer,里面有几个 RichTextBox。 RichTextBoxes 仅用于显示文本,从不编辑,从不滚动。
但是,当鼠标悬停在 RichTextBox 上时,鼠标滚轮事件似乎无法到达 ScrollViewer。有什么办法可以克服这个限制吗?
【问题讨论】:
标签:
silverlight
silverlight-4.0
richtextbox
【解决方案1】:
只读 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 使用这个样式/模板,你应该很高兴。
祝你好运,
吉姆·麦柯迪
面对面软件和YinYangMoney