我有一个文本块在WPF。我给它写了很多行,远远超过了它的垂直高度。我原以为出现这种情况时,会自动出现一个垂直滚动条,但事实并非如此。我试图在“属性”窗格中查找滚动条属性,但找不到。
我怎样才能使垂直滚动条自动创建为我的TextBlock一旦其内容超过其高度?
澄清:我宁愿从设计器中完成,而不是直接写入XAML。
我有一个文本块在WPF。我给它写了很多行,远远超过了它的垂直高度。我原以为出现这种情况时,会自动出现一个垂直滚动条,但事实并非如此。我试图在“属性”窗格中查找滚动条属性,但找不到。
我怎样才能使垂直滚动条自动创建为我的TextBlock一旦其内容超过其高度?
澄清:我宁愿从设计器中完成,而不是直接写入XAML。
当前回答
不知道如果别人有这个问题,但包装我的TextBlock到一个ScrollViewer某种程度上混乱了我的UI -作为一个简单的解决办法,我想出了替换TextBlock的文本框像这样一个
<TextBox SelectionBrush="Transparent"
Cursor="Arrow"
IsReadOnly="True"
Text="{Binding Text}"
VerticalScrollBarVisibility="Auto">
创建一个文本框,看起来和行为像一个滚动条的TextBlock(你可以在设计器中做这一切)。
其他回答
<ScrollViewer Height="239" VerticalScrollBarVisibility="Auto">
<TextBox AcceptsReturn="True" TextWrapping="Wrap" LineHeight="10" />
</ScrollViewer>
这是一种在XAML中使用滚动文本框并将其用作文本区域的方法。
你可以使用
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible"
这些是wpf的附加属性。 欲了解更多信息
http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html
不知道如果别人有这个问题,但包装我的TextBlock到一个ScrollViewer某种程度上混乱了我的UI -作为一个简单的解决办法,我想出了替换TextBlock的文本框像这样一个
<TextBox SelectionBrush="Transparent"
Cursor="Arrow"
IsReadOnly="True"
Text="{Binding Text}"
VerticalScrollBarVisibility="Auto">
创建一个文本框,看起来和行为像一个滚动条的TextBlock(你可以在设计器中做这一切)。
现在可以使用以下:
<TextBox Name="myTextBox"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.CanContentScroll="True">SOME TEXT
</TextBox>
在滚动查看器中包装它:
<ScrollViewer>
<TextBlock />
</ScrollViewer>
注:此答案适用于原问题中要求的TextBlock(只读文本元素)。
如果你想在文本框(一个可编辑的文本元素)中显示滚动条,那么使用ScrollViewer附加属性:
<TextBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto" />
这两个属性的有效值是禁用、自动、隐藏和可见。