XAML WP8并制作了一个' TextBlock'向下滚动

时间:2014-05-08 00:01:28

标签: c# xaml windows-phone-8

好吧,所以我在Windows Phone 8应用程序中有一个带有TextBlock的XAML页面。我的困境是:

我实际上添加了更多内容(带有Inlines.Add(new Run ...)的格式化行到TextBlock。文本块当前从下到上填充,因为ScrollViewer在底部出现一条线只要TextBlock一旦填满就继续向下滚动(实际上这看起来可能更好),我也会很好地开始从顶部出现。我的TextBlock在ScrollViewer中如下所示:

    <Popup x:Name="send_message_xaml" Grid.Row="1" VerticalOffset="0" Width="750" Height="auto">
        <StackPanel Orientation="Vertical" Margin="0,0" Width="auto" Height="auto">
            <ScrollViewer Height="345" HorizontalAlignment="Left" Margin="0,0,0,0" Name="scrollViewer1" VerticalAlignment="Bottom" Width="420" VerticalScrollBarVisibility="Auto">
                <TextBlock x:Name="message_log"  Margin="40,50,0,0" TextWrapping="Wrap" Width="420" VerticalAlignment="Top" FontSize="22"/>
            </ScrollViewer>
            <TextBox x:Name="message_to_send" InputScope="Chat" Width="480" KeyDown="message_to_send_KeyDown" Margin="15,0"/>
        </StackPanel>
    </Popup>

如何让文本块滚动以便最新添加的消息始终位于底部?我发现了一堆这样的线程,但到目前为止似乎没有解决我的问题。我是否需要在附近添加一些代码?

1 个答案:

答案 0 :(得分:1)

您需要根据VerticalOffset更新ScrollableHeight。当您向TextBlock添加新内联时,其高度将会发生变化,并会通知父ScrollViewer。因此,在向内联添加新项目后,请运行Measure方法并更新VerticalOffset

Here is an example.