1

我有一个 Silverlight 4 浏览器外应用程序,其中有一个 ScrollViewer,里面有几个 RichTextBoxes。RichTextBoxes 仅用于显示文本,从不编辑,从不滚动。

但是,当鼠标悬停在 RichTextBox 上时,鼠标滚轮事件似乎无法到达 ScrollViewer。有没有办法克服这个限制?

4

1 回答 1

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'es,您应该很高兴。

祝你好运,
Jim McCurdy
Face to Face Software 和 YinYangMoney

于 2010-04-08T02:02:40.877 回答