Silverlight - 在TextBox模板中使用ScrollViewer

时间:2010-05-19 15:27:26

标签: silverlight xaml templates textbox scrollviewer

我正在尝试创建一个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>

知道为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

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