首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ListPicker和DataBinding

使用ListPicker和DataBinding
EN

Stack Overflow用户
提问于 2012-03-16 22:26:54
回答 2查看 3.2K关注 0票数 2

好的。投降了。我想在我的Windows应用程序中使用ListPicker控件。我得到一个异常,SelectedItem必须始终设置为有效值

这是我的ListPicker中的XAML部分:

代码语言:javascript
复制
<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的:

代码语言:javascript
复制
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的用法不太了解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-16 22:32:12

看看我对这个问题的回答:Silverlight ComboBox binding with value converter

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

票数 1
EN

Stack Overflow用户

发布于 2012-03-16 22:33:58

我希望SelectedCategory返回的对象是来自CategoryList集合的对象之一。在您的示例中,您要在get中实例化它,所以情况肯定不是这样的。

如果CategoryList包含一些值,那么也许可以将_selectedCategory初始化为null,然后在get中

代码语言:javascript
复制
if(_selectedCategory == null) {
   _selectedCategory = CategoryList.First();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9745279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档