在WPF中自动滚动到文本块的末尾

本文关键字:文本 滚动 WPF | 更新日期: 2023-09-27 18:25:48

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

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

有人能帮帮我吗?

在WPF中自动滚动到文本块的末尾

我认为TextBlock无法滚动。您可以将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()方法。看看这个或这个,了解一下,但你可能需要做更多的研究。

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