1
我想製作一個TextBox模板,我需要在模板中包含一個ScrollViewer - 基本上我想添加一些需要滾動的內容(如行號)正常的文字。 對TextBox的默認模板是這樣的:Silverlight - 在TextBox模板中使用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 x:Name="ContentElement" BorderThickness="0" IsTabStop="False" Padding="{TemplateBinding Padding}"/>
</Border>
</Grid>
</Border>
如果我從ScrollViewer中改變的ContentElement邊境,例如,文本框可以正常工作 - 我只是失去滾動能力。 現在,如果我用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>
任何想法爲什麼發生這種情況,我該如何解決它?
我檢查了反射器,從我可以告訴它儘量使用ContentElement作爲ScrollViewer,但這應該只會影響滾動。如果ContentElement不是ScrollViewer,TextBox將按預期工作(插入和選擇) - 根據文檔,它可以是任何FrameworkElement。如果ContentElement包裝在ScrollViewer中,會出現問題,但我無法弄清楚原因。 – vladhorby 2010-05-21 22:16:16