「Androidは電気羊の夢を見るか」を読みたい管理者のブログ

仕事などでの色々な発見を記事にしてます。不定期更新。

ListBoxにBindingする方法

色々と嵌まってて最後感動的な解決が出来たのでメモ

 

やりたいことはListBoxのItemsSourceをBindingしてViewModelでListBoxのアイテムを管理しようってことです。

当初IEbumable型をBindingしようとしてたのですが、どうもうまくいかない。

デバッグ実行してみるとプロパティのsetterがうまく呼ばれてなかったんですね。

 


        List<string> _listboxitem;

 

//これを呼ぶも
        private void Exec(object o)
        {
            if (text != null)
            {
                listboxitem.Add(text);
            }
        }
        public ObservableCollection<string> listboxitem
        {
            get
            {
                return _listboxitem;
            }
            set
            {//なぜかここにこない
                _listboxitem = value;
                NotifyPropertyChanged("listboxitem");
            }
        }

 

で、「ListBox Binding」でgoogle先生から検索してみると、

ListBoxのItemsSourceにBindingするにはObservableCollection<T>型のプロパティにBindingしなきゃだめだってわかったので、以下のように修正

 


        ObservableCollection<string> _listboxitem;

        public ObservableCollection<string> listboxitem
        {
            get
            {
                return _listboxitem;
            }
            set
            {
                _listboxitem = value;
                NotifyPropertyChanged("listboxitem");
            }
        }

 無事動きました。

 

いや―長かったよー。