Windows phone 7 使用ListPicker和数据绑定

Windows phone 7 使用ListPicker和数据绑定,windows-phone-7,mvvm-light,listpicker,Windows Phone 7,Mvvm Light,Listpicker,嗯。我放弃了。 我想在我的一个Windows Phone应用程序中使用ListPicker控件。我收到一个异常,SelectedItem必须始终设置为有效值 这是我的XAML ListPicker: <toolkit:ListPicker x:Name="CategoryPicker" FullModeItemTemplate="{StaticResource CategoryPickerFul

嗯。我放弃了。 我想在我的一个Windows Phone应用程序中使用ListPicker控件。我收到一个异常,SelectedItem必须始终设置为有效值

这是我的XAML ListPicker:

<toolkit:ListPicker x:Name="CategoryPicker"                                     
           FullModeItemTemplate="{StaticResource CategoryPickerFullModeItemTemplate}" 
           Margin="12,0,0,0"                                    
           ItemsSource="{Binding CategoryList}"                                        
           SelectedItem="{Binding SelectedCategory, Mode=TwoWay}"
           ExpansionMode="ExpansionAllowed"      
           FullModeHeader="Pick Categories" 
           CacheMode="BitmapCache" 
           Width="420" 
           HorizontalAlignment="Left" />

感谢你的帮助!!!也许我还不太了解ListPicker的用法。

看看我对这个问题的回答:


简而言之,所选项目必须是包含在集合中的项目。您的getter正在将所选项目设置为新对象。此新对象不包含在集合中

我希望SelectedCategory返回的对象是CategoryList集合中的一个对象。在您的示例中,您正在get中实例化它,因此情况绝对不是这样

如果CategoryList包含一些值,则可能会将_selectedCategory初始化为null,然后在get

if(_selectedCategory == null) {
   _selectedCategory = CategoryList.First();
}

那是个打字错误。我从getter上删除了该行。还是一样的错误。我将查看你发布的链接。我在自己的应用程序中使用具有“相同”代码的列表选择器。我尝试添加与您没有FullModeItemTemplate的xaml相同的xaml(因为我不知道它是什么)。只有当所选项目不是集合中包含的项目时,才会出现错误。您可以让所选项目为空,但它不能是不在集合中的项目。非常感谢您的指导。加载屏幕时,我没有正确分配SelectedCategory。这引起了很多头痛。您的回答给了我一个视角,并引导我找到错误的正确方法!多谢。现在让我去把头撞在墙上!:)达米安,谢谢你的意见。您的回答也有助于在正确的位置初始化SelectedCategory属性。Shawn和你的回答都让我纠正了这个问题。具有讽刺意味的是,我不能把你的回答都记为答案。想想你自己也有标记。嗨,RajeavnAIR,你能分享你的答案吗?我也和你一样有问题
if(_selectedCategory == null) {
   _selectedCategory = CategoryList.First();
}