1

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 は正常に動作します。スクロール機能が失われます。ここで、ContentElement を ScrollViewer でラップすると、キャレットと選択範囲が表示されなくなります。ただし、入力しても更新されます。

                            <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>

なぜこれが起こるのか、どうすれば修正できますか?

4

1 に答える 1

0

私が確認していないので、暗闇の中でのショットです...しかし、コントロールは、タイプ ScrollViewer の ContentElement という名前の TemplatePart を探している可能性があります。

于 2010-05-21T13:21:11.410 に答える