Silverlight 4 - 鼠标滚轮在包含RichTextBox时停止滚动ScrollViewer

时间:2010-02-12 01:41:47

标签: silverlight silverlight-4.0 richtextbox

我有一个带有ScrollViewer的Silverlight 4浏览器外应用程序,里面有几个RichTextBox。 RichTextBox仅用于显示文本,永远不会编辑,也不会滚动。

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

1 个答案:

答案 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
面对面软件和YinYangMoney