我正在構建一個Data類的應用程序,用於存儲我的所有數據。在這個類中,我有一個充滿對象的列表。我有一個ObservableCollection和ListView的頁面。目前,當我更新ObservableCollection時,我將其清除並用Data-class列表中的所有數據重新填充。當我這樣做時,我的ListView閃爍。我的猜測是,完全重建ObservableCollection會導致這種情況,並結合使用不是最輕的自定義ViewCell。我怎麼能只更新我想要的? list/o.collection可以有不同的大小。 list/o.collection都存儲同一個對象。如何使用列表更新ObservableCollection並僅更新已更改的值?
我的嘗試:
List<csharp.Truck> favs = data.getFavoriteTrucks();
trucks.Clear();
foreach (csharp.Truck truck in favs)
{
trucks.Add(truck);
}
}
作品,但讓我的ListView閃爍。
現在嘗試這個,它的代碼非常糟糕,我認爲它確實更新了我想要的列表,但是listview並沒有因爲某些原因而得到更新。也許我需要觸發刷新?
List<csharp.Truck> all = data.getTrucks();
//if list sizes are not equal(excess/missing objects)
if (all.Count != trucks.Count)
{
//excess object
if (all.Count < trucks.Count)
{
trucks.Clear();
foreach(csharp.Truck t in all)
{
trucks.Add(t);
}
}
//object missing
if(all.Count > trucks.Count)
{
foreach(csharp.Truck t in all)
{
if (!trucks.Contains(t))
{
trucks.Add(t);
}
}
}
}//objects are now the same
//test if object is present but outdated(favorite property)
foreach(csharp.Truck t in trucks)
{
if (t.isFavorite() != all[all.IndexOf(t)].isFavorite())
{
t.setFavorite(all[all.IndexOf(t)].isFavorite());
}
}
此外,讓我知道這種方法是不是良好的做法在第一位。
請張貼到目前爲止,你已經嘗試了一些代碼,使人們可以在右鍵點你方向。 –
添加示例。 – wasted