0

私はXamarin FormsアプリケーションでPrismを使用しています。Observable Collectionが変更されたときListView UIを更新しない(Xamarinフォームのプリズム)

Observable Collectionをリストビューにバインドしています。データを更新すると、View Model Collectionは新しいデータで更新されますが、UIは更新されません。

調査の結果、アイテムが追加または削除されたときにのみコレクションが更新されることがわかりました。

public async Task RefeshEvents() 
    { 
     try 
     { 
      IsLoading = false; 
      IsRefreshing = true; 
      Events = await _eventService.GetEvents(); 
      IsRefreshing = false; 
     } 
     catch (Exception) 
     { 
      await 
       _pageDialogService.DisplayAlertAsync("Connection Error", 
        "We could not Connect to the internet please check your connection", "Ok"); 
      IsRefreshing = false; 
     } 

    } 

ご覧のとおり、新しいリストをコレクションに割り当てています。

private ObservableCollection<Event> _events; 
    public ObservableCollection<Event> Events 
    { 
     get { return this._events; } 
     set { SetProperty(ref _events, value); } 
    } 

手動でリストを管理することなくUIを更新する方法はありますか?

+0

Eventsプロパティの定義を入力してください。 –

+0

@BrianLagunas私はプロパティ定義を追加しました – whiskeycoder

+0

@ BrianLagunas私の前提は、BindableBaseがViewmodelプロパティに新しいコレクションを割り当てるときにPropertyChangedを呼び出すということでしたか? – whiskeycoder

答えて

1

EventsObservableCollectionであれば、あなたはUIが他のプロパティと同様に、新しい値に応じて更新するための新たな値に設定した場合、そのプロパティのためNotifyPropertyを調達する必要があります。あなたがコレクションを変更とき

ObservableCollectionは(すなわち、要素を追加または削除)、自動的にUIを更新していますが、コレクション全体にを交換とき、あなたは、コレクションが、あなたのビューモデルのプロパティを変更しないでください。

+0

My ViewModelは、InformifyPropertyChangedインターフェイスを継承するBindable Baseを継承します。したがって、Viewmodelプロパティの変更によってNotifyPropertyメソッドが呼び出される必要はありませんか? – whiskeycoder

+0

はい、そうするべきです。あなたの編集の前に私の答えを投稿...しかし、プロパティが実際に新しい値に設定されていることを確認することができます(または 'GetEvents'は常に同じコレクションを返しますか?そしてbtw、それを全体として置き換えるとなぜObservableCollectionですか? – Haukinger

+0

イベントを取得すると、新しいコレクションが返され、プロパティに割り当てられます。私はあなたがあなたの答えで説明した後ObservableCollectionの必要がないことに同意する – whiskeycoder

関連する問題