Windows phone 7 正确更改ItemsSource属性(Windows Phone-MVVM)

Windows phone 7 正确更改ItemsSource属性(Windows Phone-MVVM),windows-phone-7,mvvm,windows-phone-8,windows-phone,mvvm-light,Windows Phone 7,Mvvm,Windows Phone 8,Windows Phone,Mvvm Light,我正在构建一个Windows Phone 8应用程序(使用MVVM Light),其中有一个listpicker,其ItemsSource(单向)和SelectedItem(双向)都绑定到单个ViewModel上的属性。现在,我的问题是:建议用什么方法将ItemsSource更新为一组完全不同的项(可能不会与旧项重叠) 由于SelectedItem无效,因此仅替换它或它的内容不起作用,因为我会收到错误。显然,如果我先设置SelectedItem,就会出现错误,因为该项还不在源集合中。我见过一些解

我正在构建一个Windows Phone 8应用程序(使用MVVM Light),其中有一个listpicker,其ItemsSource(单向)和SelectedItem(双向)都绑定到单个ViewModel上的属性。现在,我的问题是:建议用什么方法将ItemsSource更新为一组完全不同的项(可能不会与旧项重叠)


由于SelectedItem无效,因此仅替换它或它的内容不起作用,因为我会收到错误。显然,如果我先设置SelectedItem,就会出现错误,因为该项还不在源集合中。我见过一些解决方法要么混乱,要么过于冗长,但我认为肯定已经存在一个更简单的解决方案,因为这似乎是一种非常常见的模式。

在清除
ObservableCollection
并向其重新添加项之前,请将
SelectedItem设置为null


确保
SelectedItem
属性的类型为
nullable

共享您尝试过的内容和遇到的错误,以了解问题的解决方案。到目前为止,我最好的解决方案是在SelectedItem backing属性的getter中添加一个检查,如果它不包含在集合中,请将其设置为集合的第一个元素。但是,这仍然感觉有点像一种变通方法。引用总是可以为null的,但是我如何使它接受“null”值而不中断呢?()