确定。我放弃。 我想在我的一个Windows Phone应用程序中使用ListPicker控件。我收到异常必须始终将SelectedItem设置为有效值。
这是我的ListPicker的XAML片段:
<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" />
CategoryList
是我的ViewModel中的ObservableCollection<Category>
。
SelectedCategory
是我的ViewModel中属性类别的属性。
这就是我声明CategoryList和SelectedCategory:
的方式private Category _selectedCategory;// = new Category();
private ObservableCollection<Category> _categoryList = new ObservableCollection<Category>();
public ObservableCollection<Category> CategoryList
{
get
{
return _categoryList;
}
set
{
_categoryList = value;
RaisePropertyChanged("CategoryList");
}
}
public Category SelectedCategory
{
get
{
return _selectedCategory;
}
set
{
if (_selectedCategory == value)
{
return;
}
_selectedCategory = value;
RaisePropertyChanged("SelectedCategory");
}
}
感谢您的帮助!也许我还没有很好地理解ListPicker的用法。
答案 0 :(得分:2)
我希望SelectedCategory返回的对象是CategoryList集合中的一个对象。在你的例子中,你是在get中实现它,所以绝对不是这样。
如果CategoryList包含一些值,那么可能将_selectedCategory初始化为null,然后在get
中if(_selectedCategory == null) {
_selectedCategory = CategoryList.First();
}
答案 1 :(得分:1)
看看我对这个问题的回答: Silverlight ComboBox binding with value converter
简短回答是所选项目必须是集合中包含的项目。您的getter将所选项目设置为新对象。此新对象不包含在集合
中