我有一个文本块在WPF。我给它写了很多行,远远超过了它的垂直高度。我原以为出现这种情况时,会自动出现一个垂直滚动条,但事实并非如此。我试图在“属性”窗格中查找滚动条属性,但找不到。
我怎样才能使垂直滚动条自动创建为我的TextBlock一旦其内容超过其高度?
澄清:我宁愿从设计器中完成,而不是直接写入XAML。
我有一个文本块在WPF。我给它写了很多行,远远超过了它的垂直高度。我原以为出现这种情况时,会自动出现一个垂直滚动条,但事实并非如此。我试图在“属性”窗格中查找滚动条属性,但找不到。
我怎样才能使垂直滚动条自动创建为我的TextBlock一旦其内容超过其高度?
澄清:我宁愿从设计器中完成,而不是直接写入XAML。
当前回答
更好的做法是:
<Grid Width="Your-specified-value" >
<ScrollViewer>
<TextBlock Width="Auto" TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
这可以确保文本块中的文本不会溢出,并与文本块下面的元素重叠,因为如果您不使用网格,可能会出现这种情况。当我尝试其他解决方案时,即使文本块已经在与其他元素的网格中,这种情况也发生在我身上。请记住,文本块的宽度应该是Auto,你应该在Grid元素中指定所需的宽度。我在我的代码中这样做了,它工作得很漂亮。 HTH。
其他回答
更好的做法是:
<Grid Width="Your-specified-value" >
<ScrollViewer>
<TextBlock Width="Auto" TextWrapping="Wrap" />
</ScrollViewer>
</Grid>
这可以确保文本块中的文本不会溢出,并与文本块下面的元素重叠,因为如果您不使用网格,可能会出现这种情况。当我尝试其他解决方案时,即使文本块已经在与其他元素的网格中,这种情况也发生在我身上。请记住,文本块的宽度应该是Auto,你应该在Grid元素中指定所需的宽度。我在我的代码中这样做了,它工作得很漂亮。 HTH。
<ScrollViewer Height="239" VerticalScrollBarVisibility="Auto">
<TextBox AcceptsReturn="True" TextWrapping="Wrap" LineHeight="10" />
</ScrollViewer>
这是一种在XAML中使用滚动文本框并将其用作文本区域的方法。
在滚动查看器中包装它:
<ScrollViewer>
<TextBlock />
</ScrollViewer>
注:此答案适用于原问题中要求的TextBlock(只读文本元素)。
如果你想在文本框(一个可编辑的文本元素)中显示滚动条,那么使用ScrollViewer附加属性:
<TextBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto" />
这两个属性的有效值是禁用、自动、隐藏和可见。
这是这个问题的一个简单的解决方案。只有当文本溢出时,垂直滚动才会被激活。
<文本框文本="试着在这里输入一些文本" ScrollViewer。VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow" />
<ScrollViewer MaxHeight="50"
Width="Auto"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<TextBlock Text="{Binding Path=}"
Style="{StaticResource TextStyle_Data}"
TextWrapping="Wrap" />
</ScrollViewer>
我用另一种方式做到这一点,把MaxHeight放在ScrollViewer中。
只需调整MaxHeight来显示更多或更少的文本行。一件容易的事。