当我使用ScrollIntoView作为我的列表视图时,该页面空白片刻然后重新呈现,我该如何让它更流畅?
这是我目前的代码:
<ListView Name="MessageList" Margin="0,82,0,45"
SelectionMode="None"
IsItemClickEnabled="True"
ItemClick="FileMessage_Click"
HorizontalAlignment="Stretch"
ItemTemplateSelector="{StaticResource MsgDataTemplateSelector}"
ItemsSource="{x:Bind messages}" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
在代码隐藏中,每次将新消息添加到可以进入列表视图的可观察集合时,我都会这样做:
MessageList?.ScrollIntoView(MessageList.Items[MessageList.Items.Count -1]);
答案 0 :(得分:0)
我没有完全复制你的问题。在我的电脑上,此问题仅在我第一次将项目添加到ListView
时发生。 ListView
使用ItemsStackPanel作为默认面板,支持UI虚拟化。将默认面板更改为不支持UI虚拟化的StackPanel后,问题不会出现。
您可以更改ItemsPanel
的{{1}},如下所示:
ListView
更新:要滚动到最后一项,您需要设置ListView的高度并在<ListView Name="MessageList" Margin="0,82,0,45"
SelectionMode="None"
Height="300"
IsItemClickEnabled="True"
HorizontalAlignment="Stretch"
ItemsSource="{x:Bind messages}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
之前调用ListView.UpdateLayout:
ScrollIntoView