WPF中Textblock自动滚动到末尾

4
我想查看最后添加的文本块内容。这意味着当我添加更多文本时,我希望自动滚动到底部并查看隐藏的内容...就像在Windows计算器中一样。
在计算器中,当我输入更多数字时,它只显示最后输入的数字。当没有足够的空间时,先前输入的数字将被隐藏。我想做完全相同的事情...
有人可以帮帮我吗?

1
文本框已经内置了此功能,能否使用它代替? - jamesSampica
2个回答

17

我认为无法滚动。你可以将放在中。

XAML:

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

代码后台:

MyScrollViewer.ScrollToBottom();

看起来,如果您在ListBox中有多个TextBlock,则不能很容易地访问其ScrollViewer以完成相同的操作。 如果您正在这样做,请将您的ListBox更改为ItemsControl并将其放入ScrollViewer中。 尽管如此,我认为您会失去选择能力。

如果您确实需要使用ListBox,则可以获取属于最后一个项目的视图,并调用ListBox的ScrollIntoView()方法。请参见此处此处,但您可能需要进行更多的研究。


1
你是指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>

1
对我不起作用。我正在将它用作控制台,并从日志中附加文本。但它不会自动滚动。 - Kundan
1
这个问题涉及到TextBlock作为主要输出UI元素,其中滚动非常受欢迎。 - Sergey Orlov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接