私は、このクラスのリストにそれらを受け取る、私は、Webサービス から取得した画像のグループを持つビューがあります。私は、投票ボタンを表示するので、私は追加された各画像の下にObservableCollectionでモデルプロパティが変更されたときのUIの更新?
public class ImageModel
{
public int Id { get; set; }
public string Name { get; set; }
public string imageUrl { get; set; }
}
をこれらのイメージを示しListView
がObservableCollection<ImageModel >
にバインドされている
public bool UpVoted { get; set; }
が、私は、対応するアイコンにUpVoted
の値を変換するコンバータを介して、投票のアイコンを変更したい:上記のモデルに別のブール値プロパティユーザーが投票アイコンをクリック:a commそして、この方法を実行します。
private void OnVoting(ImageModel image)
{
Images.Single(x => x.id == image.id).UpVoted = !image.UpVoted;
}
問題は、UIが更新されないということである、と私はビューモデルにモデルを投入し、UpVoted
プロパティに必要な変更をした問題を理解していることを確認するために(私が「私はUIにUpVoted
をバインドする必要があり、それは最初 Y
ここに問題がありますか?私が見る限りでは、MVVMの仕組みを説明したばかりです。 – LordWilmore
ImageModelsのリストを観測可能にすると、そのリストへのエントリが追加または削除された場合にのみ通知されます。モデルにそのプロパティのいずれかの変更について通知する場合は、モデルをそこで実行するか、またはViewModelを使用する必要があります。私はちょうどあなたがそれを保存したい場合、ViewModelのModelのPropertyを参照することになります。 – Fildor
@Fildorが言ったことを補完するために、少なくともUWPの解決策の1つは、リストで項目を追加するときに購読することです.Optservableイベントハンドラは、ObservableCollectionに項目が変更されたことを通知します。あなたのアイテムがコレクションから削除されたときの逆です。 –