gpt4 book ai didi

c# - 字符串未添加到可观察集合 Xamarin Forms

转载 作者:太空宇宙 更新时间:2023-11-03 19:46:30 26 4
gpt4 key购买 nike

我创建了一个正确更新的可观察集合。但是只更新可观察集合中的一个字符串。我在执行此操作的循环中抛出了一个调试点,字符串列表显示为有两个项目,但只有其中一个被添加到可观察集合中。

设置可观察集合的函数:

public async Task GetNotificationData()
{
List<string> intermediary = _database.getMessages();

foreach (var variable in intermediary)
{
DataBaseList = new ObservableCollection<string> { variable };
}
_DataBaseList = DataBaseList;
}

以及从 SQLite 数据库返回数据的函数 (getMessages):

   public List<string> getMessages()
{

var DataBaseSelection = _connection.Query<MessageTable>("Select * From [MessageTable]");
List<string> dataList = new List<string>();

for (var i=0;i<DataBaseSelection.Count;i++)
{
dataList.Add(DataBaseSelection[i].message);
}
return dataList;

}

为了完整起见,Xaml:

<ListView
x:Name="notificationList"
ItemsSource="{Binding DataBaseList}">
</ListView>

需要明确的是,这是在前端显示列表中的一个字符串而不是另一个,就像它跳过列表中的第二个字符串一样。列表中的第一个字符串是“test”,第二个字符串称为“test2”,但 ListView 中仅显示 test。

有什么见解吗?

最佳答案

在您的 foreach 中,您创建了 ObservableCollection 的新实例。

foreach (var variable in intermediary)
{
DataBaseList = new ObservableCollection<string> { variable };
}

要使 ObservableCollection 正常工作,您需要将其实例化一次。如果您想添加新的,只需清除列表,如下所示:

DataBaseList.Clear();

foreach (var variable in intermediary)
{
DataBaseList.Add(variable);
}

关于c# - 字符串未添加到可观察集合 Xamarin Forms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44906590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com