2014-08-27 36 views
1

我正在嘗試動態修改ViewModel的List(ObservableCollection)中的項目,並通過MvvmCross綁定使這些更改在View中更新。我最終的目標是,當用戶點擊列表項目時,我會彈出一個對話框,要求他們編輯該項目。當對話框變暗時,視圖模型將被更新(通過我假設的ICommand),並且修改後的值現在將在列表中。MvvmCross DataBinding修改Android ListView中的單個項目

我還沒有看過對話框,所以現在我只是試圖切換一個布爾值,每次單擊列表項並在MvxListView中更改該值。我將視圖中的MxvListView綁定到ViewModel中的ObservableCollection,並且有一個MvxCommand,當選擇一個項目時會調用它。所有這些都在工作,我可以看到調試器中的值發生了變化,但是,新值不會顯示在MvxListView中。所以我的問題是:如何獲取ObservableCollection中單個項目中的修改數據以綁定到MvxListView?

我在網上看到的所有例子都使用ObservableCollection進行動態綁定,但他們只添加或刪除項目。我還沒有找到任何修改項目的例子。如果我將MvxCommand中的代碼從修改數據更改爲添加或刪除項目,則列表將會更新。所以這告訴我我很接近。

而不是複製粘貼在這裏的代碼,我創建了一個示例項目在GitHub上這裏看看: https://github.com/smulrich/breaktimer

我欣賞的幫助。

回答

2

您只需更換
Breaks[index] = b;

Breaks[index] = new DailyBreak() { Reason = b.Reason, TimeOfDay = b.TimeOfDay, Enabled = b.Enabled };

還是比較合理的,你應該名單之中,ObservationCollection和INotifyPropertyChanged的實現INotifyPropertyChangedDailyBreak 指出錯誤,請參閱enter link description here

+1

+1爲「更合理」的建議。最好的方法是'DailyBreak'實現'INotifyPropertyChanged' - 例如它可以從'MvxNotifyPropertyChanged'繼承 – Stuart 2014-08-28 12:21:18