2011-07-26 11 views
1

SilverlightプロジェクトにListBoxがあります。リストボックスからListItemを削除して追加すると、次のエラーが表示されます。SilverlightでListItemを削除します。

Operation not supported on read-only collection. 

コード:

public void btnUp_Click(object sender, RoutedEventArgs e) 
    { 
     if (lbChoices.SelectedItem != null) 
     { 
      ListBoxItem selectedItem = new ListBoxItem();   
      selectedItem.Content = lbChoices.SelectedItem; 
      selectedItem.IsSelected = true; 
      int selectedIndex = lbChoices.SelectedIndex; 
      if (lbChoices.Items.Count > 1) 
      {    
       if (selectedIndex > 0) 
       { 
        lbChoices.Items.Remove(lbChoices.SelectedItem);  
        lbChoices.Items.Insert(selectedIndex - 1, selectedItem);     
        } 
      } 
     } 
    } 

答えて

0
は、このようにコードを変更し

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    if (lbChoices.SelectedItem != null) 
    { 
     ListBoxItem selectedItem = (ListBoxItem)lbChoices.SelectedItem; 
     int selectedIndex = lbChoices.SelectedIndex; 
     if (lbChoices.Items.Count > 1) 
     { 
      if (selectedIndex > 0) 
      { 
       lbChoices.Items.Remove(lbChoices.SelectedItem); 
       lbChoices.Items.Insert(selectedIndex - 1, selectedItem); 
      } 
     } 
    } 
} 

あなたのリストボックスで選択した項目を上に移動しているようです。

+0

まずは、おかげさしくありがとう。さらに、 上下のボタンで項目の位置を変更したい – Selo

1

あなたがのItemsSourceでのItemsControlを使用している、あなたは、Itemsコレクションを使用して要素を追加/削除することはできません。代わりに、基礎となるコレクションを変更する必要があります。

"この問題は、ListBoxをObservableCollectionにバインドした後、Itemsコレクションが一度読み込み専用になると発生します。

1

ItemsSourceをバインドしてアイテムを追加したと思いますか?その場合は、バインドしているコレクションからアイテムを削除してください。

1

ListBoxがバインドされている項目から、ListBox自体を削除する必要があります。ソースから削除すると、ListBoxは自動的に更新され、アイテムが表示されません。

関連する問題