我正在尝试创建一个聊天页面。有一个列表视图,其 itemssource 是 ObservableCollection。在将项目添加到 ObservableCollection 之前,一切似乎都很顺利。添加的项目不会立即出现在屏幕上,只有在触摸屏幕后才会显示。
实际上,我遇到了与此处所述相同的问题:https ://forums.xamarin.com/discussion/18631/listview-binding-to-observablecollection-does-not-update-gui/p2
我相信线程(第 2 页)中所述的解决方案之一与 INotifyPropertyChanged 有关。经过多次尝试应用解决方案以满足我的需求后,我无法这样做。所以请您指导我正确的方向。
我的代码总结如下:
public partial class Chat : ContentPage
{
private ObservableCollection<MessageObj> Messages = new ObservableCollection<MessageObj>();
public Chat(string name, string imageURL, int UID)
{
msgList.ItemsSource = Messages; //msgList is ListView in XAML
}
public class MessageObj
{
public string Mess { get; set; }
public TextAlignment textAlignment { get; set; }
public MessageObj(string Mess, TextAlignment textAlignment)
{
this.Mess = Mess;
this.textAlignment = textAlignment;
}
}
}
我还阅读过:Xamarin Forms ListView ObservableCollection 未更新我想我正在更改集合,所以我不应该面临这个问题,但我是。任何帮助/见解将不胜感激!
我添加了一个包含我的代码以供参考的要点,其中显示了我现在评论过的不同解决方案的尝试:https ://gist.github.com/Dobermensch/49ee9d8adb9a83a38790b691c857691d
编辑:为要点添加了一些最初省略的代码
Edit2:仅供参考,我没有使用 MVVM 模式。