0

我正在構建Windows Phone 8應用程序(使用MVVM Light),其中我有一個listpicker,其ItemsSource(單向)& SelectedItem(雙向)都綁定到屬性在一個ViewModel上。現在,我的問題是:將ItemsSource更新爲完全不同的項目(可能不會與舊項目重疊)的推薦方法是什麼?正確更改ItemsSource屬性(Windows Phone - MVVM)

只需更換它或其內容即可,因爲SelectedItem無效,所以出現錯誤。顯然,如果我先設置SelectedItem,則會出現錯誤,因爲該項目尚未處於源集合中。我已經看到一些混亂或過於冗長的解決方法,但我認爲必須已經存在一個更簡單的解決方案,因爲這似乎是一個非常常見的模式。

+0

分享你試過的東西和你得到的錯誤,瞭解你的問題的解決方案。否則,沒有人能夠回答。 –

+0

到目前爲止,我的最佳解決方案是在SelectedItem支持屬性的getter中添加一個檢查,如果它不包含在集合中,請將其設置爲集合的第一個元素。但是,這仍然有點像解決方法。 – Lotus

回答

0

在清除ObservableCollection<T>並重新添加項目之前,將SelectedItem設置爲null。

請確保SelectedItem屬性的類型爲nullable

+0

引用總是可以爲空,但是如何讓它在不中斷的情況下接受「null」值? (http://stackoverflow.com/questions/4938439/make-no-item-selected-in-windows-phone-toolkit-list-picker) – Lotus