Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# Windows Phone。ObservableCollection作为聊天应用程序中ListView的源_C#_Listview_Windows Runtime_Windows Phone_Observablecollection - Fatal编程技术网

C# Windows Phone。ObservableCollection作为聊天应用程序中ListView的源

C# Windows Phone。ObservableCollection作为聊天应用程序中ListView的源,c#,listview,windows-runtime,windows-phone,observablecollection,C#,Listview,Windows Runtime,Windows Phone,Observablecollection,我已经将一个IRC库移植到WinRT(它支持很多RFC1459和一些2812),现在我尝试使用它 作为IRC消息的视图,我选择了ListView(不知道这是否是个好主意)和RichTextBlock作为项目 我使用ObservableCollection来存储传入消息(一个类)。 它绑定良好,甚至在新消息到达时会滚动到底部(感谢Marco Minerva的行为!) 我还确定我需要将收集限制在一定范围内(比如100条消息)。所以,如果到达计数器,我在集合中使用RemoveAt(0) 问题在于,当R

我已经将一个IRC库移植到WinRT(它支持很多RFC1459和一些2812),现在我尝试使用它

作为IRC消息的视图,我选择了ListView(不知道这是否是个好主意)和RichTextBlock作为项目

我使用ObservableCollection来存储传入消息(一个类)。 它绑定良好,甚至在新消息到达时会滚动到底部(感谢Marco Minerva的行为!)

我还确定我需要将收集限制在一定范围内(比如100条消息)。所以,如果到达计数器,我在集合中使用RemoveAt(0)

问题在于,当RemoveAt通知ListView时,它会跳到消息列表的中心(而不是底部)。

我做错什么了吗

谢谢大家!

解决方案是:

collection.CollectionChanged += (s, args) =>
            {
                var scrollViewer = behavior.AssociatedObject.GetFirstDescendantOfType<ScrollViewer>();
                scrollViewer.UpdateLayout();
                scrollViewer.Measure(scrollViewer.RenderSize);
                scrollViewer.ChangeView(0, scrollViewer.ScrollableHeight, scrollViewer.ZoomFactor, false);
            };
collection.CollectionChanged+=(s,args)=>
{
var scrollViewer=behavior.AssociatedObject.GetFirstDegenantofType();
scrollViewer.UpdateLayout();
scrollViewer.Measure(scrollViewer.RenderSize);
scrollViewer.ChangeView(0,scrollViewer.ScrollableHeight,scrollViewer.ZoomFactor,false);
};
解决方案是:

collection.CollectionChanged += (s, args) =>
            {
                var scrollViewer = behavior.AssociatedObject.GetFirstDescendantOfType<ScrollViewer>();
                scrollViewer.UpdateLayout();
                scrollViewer.Measure(scrollViewer.RenderSize);
                scrollViewer.ChangeView(0, scrollViewer.ScrollableHeight, scrollViewer.ZoomFactor, false);
            };
collection.CollectionChanged+=(s,args)=>
{
var scrollViewer=behavior.AssociatedObject.GetFirstDegenantofType();
scrollViewer.UpdateLayout();
scrollViewer.Measure(scrollViewer.RenderSize);
scrollViewer.ChangeView(0,scrollViewer.ScrollableHeight,scrollViewer.ZoomFactor,false);
};

嗯,我需要粘贴什么代码?调用RemoveAt的xaml和viewmodel都会有帮助。嗯,我需要粘贴什么代码?调用RemoveAt的xaml和viewmodel都会有帮助。嗯,我需要粘贴什么代码?xaml和调用RemoveAt的viewmodel都会很有帮助。