我按照以下方式设计了自定义WPF TextBox。
<TextBox VerticalAlignment="Bottom" Name="txtResult" Padding="8" FontFamily="Consolas" Margin="5" TextWrapping="Wrap">
<TextBox.Template>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<TextBox Margin="4" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text}" BorderThickness="0" Background="{x:Null}" SnapsToDevicePixels="True" ScrollViewer.VerticalScrollBarVisibility="Visible"/>
<Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}" StrokeThickness="0"/>
</Grid>
</ControlTemplate>
</TextBox.Template>
</TextBox>
但即使在ScrollViewer.VerticalScrollBarVisibility="Visible"
中添加ScrollViewer
或将文本框包装在{{1}}后,我的滚动条也不会显示。
有什么建议吗?
感谢。
答案 0 :(得分:1)
您的ControlTemplate
目标已经是TextBox
,因此ControlTemplate
没有理由包含其他TextBox
。因此,可以将ScrollViewer
替换为相应的内容主机
基于此,您的TextBox
可能如下所示:
<TextBox VerticalAlignment="Bottom"
Name="txtResult"
Padding="8"
FontFamily="Consolas"
Margin="5"
VerticalScrollBarVisibility="Visible"
TextWrapping="Wrap">
<TextBox.Template>
<ControlTemplate TargetType="{x:Type TextBox}">
<Grid>
<ScrollViewer x:Name="PART_ContentHost"
Padding="{TemplateBinding Padding}"
BorderThickness="0"
IsTabStop="False"
Margin="4"
Background="{x:Null}"/>
<Rectangle Stroke="{StaticResource ResourceKey=detailMarkBrush}"
StrokeThickness="0"/>
</Grid>
</ControlTemplate>
</TextBox.Template>
</TextBox>
如果您想在多个TextBoxes
上使用此模板,我建议使用单独的样式。
(你的矩形有StrokeThickness
为0的原因吗?)