2

Ok。あきらめる。Windows Phone アプリの 1 つで ListPicker コントロールを使用したいと考えています。SelectedItem must be set to a valid valueという例外が発生します。

これは、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" />

CategoryListObservableCollection<Category>私のViewModelに あります。SelectedCategoryType Category の 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 の使い方がよくわかっていないのかもしれません。

4

2 に答える 2

2

SelectedCategory によって返されるオブジェクトは、CategoryList コレクションのオブジェクトの 1 つになると思います。あなたの例では、get 内でインスタンス化しているため、これは間違いありません。

CategoryList にいくつかの値が含まれている場合は、おそらく _selectedCategory を null に初期化してから、get で

if(_selectedCategory == null) {
   _selectedCategory = CategoryList.First();
}
于 2012-03-16T22:33:58.900 に答える
1

この質問に対する私の答えを見てください: Silverlight ComboBox binding with value converter

簡単に言うと、選択したアイテムはコレクション内に含まれているアイテムでなければなりません。あなたのゲッターは、選択したアイテムを新しいオブジェクトに設定しています。この新しいオブジェクトはコレクションに含まれていません

于 2012-03-16T22:32:12.367 に答える