【问题标题】:Silverlight - use a ScrollViewer in a TextBox templateSilverlight - 在 TextBox 模板中使用 ScrollViewer
【发布时间】:2010-05-19 15:27:25
【问题描述】:

我正在尝试制作一个 TextBox 模板,我需要在模板中包含一个 ScrollViewer - 基本上我想添加一些需要与普通文本一起滚动的内容(如行号)。 TextBox 的默认模板是这样的:

                            <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1">
                            <Grid>
                                <Border x:Name="ReadOnlyVisualElement" Background="#5EC9C9C9" Opacity="0"/>
                                <Border x:Name="MouseOverBorder" BorderBrush="Transparent" BorderThickness="1">
                                    <ScrollViewer x:Name="ContentElement" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}"/>
                                </Border>
                            </Grid>
                        </Border>

如果我将 ContentElement 从 ScrollViewer 更改为 Border,例如,TextBox 的行为正常 - 我只是失去了滚动能力。 现在,如果我用 ScrollViewer 包装 ContentElement,它不再显示插入符号和选择 - 如果您键入,它仍然会更新。

                            <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1">
                            <Grid>
                                <Border x:Name="ReadOnlyVisualElement" Background="#5EC9C9C9" Opacity="0"/>
                                <Border x:Name="MouseOverBorder" BorderBrush="Transparent" BorderThickness="1">
                                    <ScrollViewer ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" >
                                        <Border x:Name="ContentElement" BorderThickness="0" Padding="{TemplateBinding Padding}" />
                                    </ScrollViewer>
                                </Border>
                            </Grid>
                        </Border>

知道为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: silverlight xaml templates textbox scrollviewer


    【解决方案1】:

    只是在黑暗中拍摄,因为我尚未验证...但控件可能正在寻找一个名为 ContentElement 的 ScrollViewer 类型的 TemplatePart。

    【讨论】:

    • 我检查了 Reflector,据我所知,它确实尝试将 ContentElement 用作 ScrollViewer,但这只会影响滚动。如果 ContentElement 不是 ScrollViewer,则 TextBox 按预期工作(插入符号和选择) - 根据文档,它可以是任何 FrameworkElement。如果 ContentElement 被包裹在 ScrollViewer 中,就会出现问题,但我不知道为什么。
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多