代码之家  ›  专栏  ›  技术社区  ›  Mike

Silverlight 4-当超过包含的richtextbox时,mousewheel停止滚动滚动查看器

  •  1
  • Mike  · 技术社区  · 16 年前

    我有一个带ScrollViewer的Silverlight4浏览器外应用程序,里面有几个RichTextBox。RichTextBox仅用于显示文本,从不编辑和滚动。

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

    1 回复  |  直到 16 年前
        1
  •  3
  •   Jim McCurdy    16 年前

    只读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,使用这种样式/模板,您应该可以继续使用。

    祝你好运,
    吉姆麦克寇迪
    面对面软件和银阳钱

    推荐文章