初めてビューをロードするときに、次のコードを実行して GridView ソースを設定します。
ObservableCollection<Categories> categories = await TargetUtils.GetCategoriesRemoteAsync(year);
collectionTarget.Source = categories;
インターネットで見つかった非常に多くのチュートリアルが ObservableCollection を使用し、INotifyPropertyChanged を実装して更新したため、いくつかの新しいアイテムを追加してグリッドビューを更新しようとするまで、すべて問題ありません。
私の INotifyPropertyChanged 実装:
public class Model : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
私のカテゴリクラス:
public class Categories : Model
{
public String Type { get; set; }
public List<MetaDados> MetaDados { get; set; }
public Categories(String Type)
{
this.Type = Type;
}
}
public class MetaDados : Model
{
//NORMAL IMPLEMENTATION
}
更新するには、次のようにします。
await TargetUtils.GetParcellableCategoriesRemoteAsync(Constants.FULL, year, (ObservableCollection<Categories>)collectionTarget.Source);
それは呼び出します:
public static async Task<ObservableCollection<Categories>> GetParcellableCategoriesRemoteAsync(String type, int year, ObservableCollection<Categories> categories)
{
foreach (Categories c in categories)
{
if (c.Type.Equals(type))
{
c.MetaDados = await LoadMetaDadosTask.loadMetaDados(type, year, c.MetaDados);
}
}
return categories;
}
最後に:
public static async Task<List<MetaDados>> loadMetaDados(String type, int year, List<MetaDados> metaDados)
{
//MY UPDATE CODE AND:
metaDados.Add(PARAMETERS);
return metaDados;
}
ObservableCollection を使用して INotifyPropertyChanged を実装している場合、gridView が更新されない理由がわかりません。