【问题标题】:Auto scroll to the end of a Textblock in WPF在 WPF 中自动滚动到文本块的末尾
【发布时间】:2013-08-01 20:32:11
【问题描述】:

我想查看最后添加的文本块的内容。这意味着我想在添加更多文本时自动滚动到末尾并查看隐藏的内容……就像在 Windows 计算器中一样。

在计算器中,当我输入更多数字时,它只显示最后输入的数字。当空间不足时,先前输入的数字将被隐藏。我想做同样的事情..

有人可以帮帮我吗?

【问题讨论】:

  • 一个文本框内置了这个功能。可以用这个代替吗?

标签: c# wpf


【解决方案1】:

我认为TextBlocks 不能滚动。您可以将TextBlock 放入ScrollViewer

XAML:

<ScrollViewer Name="MyScrollViewer">
    <TextBlock TextWrapping="Wrap">
        A bunch of text
    </TextBlock>
</ScrollViewer>

代码隐藏:

MyScrollViewer.ScrollToBottom();

看来,如果您在 ListBox 中有多个 TextBlock,则无法很容易地访问它的 ScrollViewer 来完成同样的事情。如果您这样做,请将您的 ListBox 更改为 ItemsControl 并将其放入 ScrollViewer。不过我认为你会失去选择能力。

如果确实需要使用 ListBox,则可以获取属于最后一项的视图并调用 ListBox 的 ScrollIntoView() 方法。请参阅 thisthis 了解一些相关信息,但您可能需要进行更多研究。

【讨论】:

    【解决方案2】:

    您的意思是 TextBox,而不是 TextBlock? TextBox 的默认行为是在输入更多文本时显示最新的文本。

    Window x:Class="textboxscrolltest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TextBox Width="75" Height="25"/>
        </Grid>
    </Window>
    

    【讨论】:

    • 不适合我。我将它用作控制台并从日志中将文本附加到它。但它不会自动滚动
    • 问题是关于 TextBlock 作为主流输出 UI 元素,非常感谢滚动
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多