2

私はのlistbox tuningList要素を含んでいList<Tuning> tuningsます:

  private void LoadList() {
            foreach (Tuning tuning in tunings)
                tuningList.Items.Add(tuning);
        }

アプリのある時点で、いくつかの要素を削除してtunings更新したいlistbox

 int selectionIndex = tuningList.SelectedIndex;
            if (selectionIndex >= 0) {
                pageTitle.Text = "Deleted tuning";
                tunings.RemoveAt(selectionIndex);
               // tuningList.Items.RemoveAt(selectionIndex);
                saveData(saver); //saves data to isolated storage 

            } 

しかしその後、リストボックスはそれ自体を更新しません。

編集: リストボックスを XAML 経由でコレクションにバインドしませんでした。要素を LoadList(); で追加しました。

<ListBox x:Name="tuningList" Margin="8,0,8,152" Tap="tuningList_Tap"/>

EDIT2:

<ListBox x:Name="tuningList" Margin="8,0,8,152" ItemsSource=tunings.Items Tap="tuningList_Tap"/>

EDIT3:

<ListBox  x:Name="tuningList" Margin="8,0,8,152"  DataContext="{Binding RelativeSource={RelativeSource Self}}" ItemsSource="{Binding tunings}" Tap="tuningList_Tap"/>   
4

1 に答える 1

6

この場合の私のアドバイスは、ListBoxコントロールをにバインドすることです。ObservableCollection<T>これは、アイテムが実装されているためにアイテムが追加または削除されたときにビューに自動的に通知しますINotifyCollectionChanged

コレクションをにバインドする必要がありListBoxます。XAMLでLoadListsetを使用する代わりに。ItemsSourceそうでなければ、何も起こりません。

于 2013-01-11T18:26:18.830 に答える