Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WP8.1中自动滚动列表视图会导致刷新动画_C#_Listview_Windows Runtime_Winrt Xaml_Windows Phone 8.1 - Fatal编程技术网

C# 在WP8.1中自动滚动列表视图会导致刷新动画

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

我正在为WP8.1创建一个新的通用应用程序,在使用集线器控件中的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\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,因此您可以滚动到垂直偏移量,问题就解决了。