私はここで深刻なメンタルブロックを抱えており、助けが必要です。私は Windows Phone Databound Application をプロジェクトの出発点として使用していますが、モデル、ビューモデル、およびビューがどのように相互作用するかにかなり満足しています。
私の問題は、例で使用されているデータが実行時に作成され、ObservableCollection オブジェクトに追加されることです。私の理解では、新しい ItemViewModel オブジェクトを作成し、その後 ObservableCollection に追加すると、NotifyPropertyChanged イベントに相当するイベントが発生し、ビューのバインディングがすべて更新されます。私の説明が間違っている場合は、どんな考えでも歓迎します。
現在、データのランタイム生成は、ほとんどの実際の例では役に立たないため、データを分離ストレージにシリアル化する必要があります。これは私が行ったもので、ObservableCollection オブジェクトを正常に保存およびロードできます。
私の問題は、IsolatedStorage からデータをロードし、返された ObservableCollection をビュー モデルの Items オブジェクトに割り当てるときに発生します。
public void LoadData()
{
App.Measurements = Serialization.Read<measurements>(App.MEASUREMENTS);
this.IsDataLoaded = true;
}
App.MEASUREMENTS は、IsolatedStorage で使用されるファイル名を含む単純なグローバル変数です。
上記のコードはデータを取得して Items ObservableCollection に割り当てますが、UI は更新されません。上記のコードを次のように置き換えると:
public void LoadData()
{
foreach (measurement m in App.Measurements.WeightMeasurements)
{
this.Items.Add(m);
}
this.IsDataLoaded = true;
}
取得したコレクションを反復処理し、新しい ItemViewModel コレクションを Items コレクションに追加すると、UI ですべてが正しく更新されます。
私のxamlには正しいバインディングがあり、DataContextも正しく設定されています。
これを解決するために多くの方法を試しましたが、ロードされたコレクション全体を繰り返し処理して、イベントが発生するものだけを Items コレクションに追加するしかないとは信じられません!
どんな考えでも大歓迎です。
ジェイソン。