C# 在WP8.1中自动滚动列表视图会导致刷新动画
我正在为WP8.1创建一个新的通用应用程序,在使用集线器控件中的ListView时遇到了一些困难 此ListView绑定到聊天消息的ObservableCollection,并且此ObservableCollection会定期使用新消息进行更新。每次更新时,我都会滚动到ListView的底部。现在,我通过以下几点来实现这一点:C# 在WP8.1中自动滚动列表视图会导致刷新动画,c#,listview,windows-runtime,winrt-xaml,windows-phone-8.1,C#,Listview,Windows Runtime,Winrt Xaml,Windows Phone 8.1,我正在为WP8.1创建一个新的通用应用程序,在使用集线器控件中的ListView时遇到了一些困难 此ListView绑定到聊天消息的ObservableCollection,并且此ObservableCollection会定期使用新消息进行更新。每次更新时,我都会滚动到ListView的底部。现在,我通过以下几点来实现这一点: this.vm.Messages.Add(new Message() { Body="Test Message", MateName="Test User", SendT
this.vm.Messages.Add(new Message() { Body="Test Message", MateName="Test User", SendTime=DateTimeOffset.UtcNow });
list_messages.ScrollIntoView(this.vm.Messages.Last());
其中,list\u messages
是带有绑定到this.vm.messages
的ItemsSource的ListView
什么样的结果有点难以用图像展示;列表会滚动到底部,但所有项目都会再次淡入,就好像整个列表正在刷新一样
以下是将新项目添加到列表末尾时的进度:
如果只是/最后一个/项目淡入。。。但整个名单似乎都在更新。这里会出什么问题
这里简单介绍了基本的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>
...
带绑定的文本块等。
据我所知,您可以尝试这样做:可能有什么东西引发了Messages属性的OnPropertyChanged事件。在属性上设置一个断点,查看添加消息时它是否中断。如果是这样,我发现调用此方法时,整个项都会重新绘制。我的数据模板中有一个自定义内容演示器,当调用ScrollIntoView(items.Last())时,将再次调用所有内容演示器的构造函数。我建议您创建一个自定义listview,在其中检索scrollviewer,因此您可以滚动到垂直偏移量,问题就解决了。