好吧,所以我在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>
如何让文本块滚动以便最新添加的消息始终位于底部?我发现了一堆这样的线程,但到目前为止似乎没有解决我的问题。我是否需要在附近添加一些代码?
答案 0 :(得分:1)
您需要根据VerticalOffset
更新ScrollableHeight
。当您向TextBlock
添加新内联时,其高度将会发生变化,并会通知父ScrollViewer
。因此,在向内联添加新项目后,请运行Measure
方法并更新VerticalOffset
。