好的。投降了。我想在我的Windows应用程序中使用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的用法不太了解。
发布于 2012-03-16 22:32:12
看看我对这个问题的回答:Silverlight ComboBox binding with value converter
简单的回答是,所选项目必须是集合中包含的项。您的getter正在将所选项设置为新对象。此新对象不包含在集合中。
发布于 2012-03-16 22:33:58
我希望SelectedCategory返回的对象是来自CategoryList集合的对象之一。在您的示例中,您要在get中实例化它,所以情况肯定不是这样的。
如果CategoryList包含一些值,那么也许可以将_selectedCategory初始化为null,然后在get中
if(_selectedCategory == null) {
_selectedCategory = CategoryList.First();
}https://stackoverflow.com/questions/9745279
复制相似问题