在silverlight中移除listtitem
本文关键字:listtitem silverlight | 更新日期: 2023-09-27 18:03:41
我有一个列表框在我的Silverlight项目。并且,当从ListBox中删除和添加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);
}
}
}
}
当您使用ItemsControl和ItemsSource时,您不能使用Items集合添加/删除元素。您应该修改您的底层集合。
"这个问题源于我将ListBox绑定到一个ObservableCollection,一旦绑定,Items集合就变成了只读。"
我猜你通过绑定ItemsSource来添加项目?如果是,从要绑定到的集合中删除项。
您需要从源中删除您的ListBox
绑定到的项目,而不是ListBox
本身。一旦您从源中删除它,ListBox
将自动刷新以不显示该项目。
像这样修改代码:
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);
}
}
}
}
看起来您正在向上移动列表框中的选定项