2017-06-19 29 views
1

我有一個ObservableCollection我試圖綁定到ListView。我創造了一切都很好。該集合中有多個項目(從在ModelStateVisualState結合兩端檢查,但View永遠不會更新。我繼續直接綁定到ModelState的一塊,一切工作就好了。Exrin:ModelState和VisualState中的ObservableCollection之間的綁定似乎沒有通過NotifyCollectionChanged

我懷疑原因是INotifyCollectionChanged沒有通過綁定發送,這是我可以修復的還是這個bug?

+0

你能發表一些代碼嗎? – hugoterelle

回答

1

VisualState和ModelState之間的綁定只在頂層屬性完成,因此如果您替換ObservableCollection與一個新的ObservableCollection一起被傳播,但綁定並不知道任何有關這些屬性的信息,因此它不會了解INotifyCollectionChan GED。

但是,綁定應該只是將參考值從ModelState複製到VisualState,因此它們都應該引用同一個對象,因此,在兩端添加一個值,應該在另一端顯示值更改以及提升的事件。

我會嘗試手動附加到事件,以確認它正在提出。

+0

這樣做的最好方法是什麼?我嘗試了'MyCollection.CollectionChanged + = NewCollectionChangedEvent',但是這導致頁面無法加載。回到我以前的做法,用戶界面中的其他內容可以根據集合中的項目進行填充,但UI不會填充ListView。 –

+0

@TimothyJames - 我已經通過並測試了它,它按預期工作。如果在ModelState中有一個ObservableCollection,並且在VisualState中具有相同的屬性,那麼將它綁定到一個列表視圖。然後,我可以對ModelState中的observable進行更新,並將它們顯示在ListView中(一個例外,這在UWP中不起作用,我認爲它是另一個XF錯誤)。我能想到的唯一的事情是嘗試在構造函數中初始化ModelState中的Observable。查看Exrin回購並運行樣品。 https://github.com/exrin/exrin –

+1

瞭解重構一些東西,並可以測試這個。我的問題是(不出意外)由於糟糕的設計。現在工作很好。謝謝,亞當! –

相關問題