我正在为 WP8.1 创建一个新的通用应用程序,并且在使用 Hub 控件内的 ListView 时遇到了一些困难。
此 ListView 绑定到聊天消息的 ObservableCollection,并且此 ObservableCollection 会定期使用新消息进行更新。每次更新时,我都会滚动到 ListView 的底部。现在,我通过以下方式完成此操作:
this.vm.Messages.Add(new Message() { Body="Test Message", MateName="Test User", SendTime=DateTimeOffset.UtcNow });
list_messages.ScrollIntoView(this.vm.Messages.Last());
list_messages
绑定了 ItemsSource 的 ListView在哪里this.vm.Messages
。
什么结果很难用图像来展示;列表滚动到底部,但所有项目再次淡入,就好像整个列表正在刷新一样。
当新项目添加到列表末尾时,这是一个进展:
如果只是 /last/ 项目消失了,那就太好了......但是整个列表似乎都在刷新。这里可能出了什么问题?
简而言之,这是基本的 XAML。
<ListView
x:Uid="list_messages"
x:Name="list_messages"
Margin="12,-12,6,0"
ItemsSource="{Binding}"
HorizontalContentAlignment="Stretch" Loaded="list_messages_Loaded">
...
<ListView.ItemTemplate>
<DataTemplate>
<ListViewItem> Textblock w/ bindings, etc. </ListViewItem>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>