删除只读列表框中的项目

时间:2011-02-07 13:08:48

标签: c# windows-phone-7 listbox

我已经使用按钮创建了一个列表框数据,并绑定到文本框。 我希望能够通过水龙头和水龙头移除一个项目。保持。 我的问题:弹出无效的操作异常

这是我的代码

按钮删除=(按钮)发件人;

     fileListbox.Items.Remove(remover.Content); 

System.InvalidOperationException未处理   Message =只读集合不支持操作。   堆栈跟踪:     àSystem.Windows.Controls.ItemCollection.RemoveImpl(Object value)     àSystem.Windows.Controls.ItemCollection.RemoveInternal(Object value)     àSystem.Windows.PresentationFrameworkCollection1.Remove(Object value) à proByOrange.views.preDevis.Page1.GestureListener_Tap(Object sender, GestureEventArgs e) à Microsoft.Phone.Controls.SafeRaise.Raise[T](EventHandler 1 eventToRaise,Object sender,GetEventArgs 1 getEventArgs) à Microsoft.Phone.Controls.GestureListener.RaiseGestureEvent[T](Func 2 eventGetter,Func`1 argsGetter,Boolean releaseMouseCapture)     àMicrosoft.Phone.Controls.GestureListener.ProcessTouchPanelEvents()     àMicrosoft.Phone.Controls.GestureListener.TouchComplete()     àMicrosoft.Phone.Controls.GestureListener.Touch_FrameReported(Object sender,TouchFrameEventArgs e)     àSystem.Windows.Input.Touch.OnTouch(Object sender,TouchFrameEventArgs e)     àMS.Internal.JoltHelper.RaiseEvent(IntPtr target,UInt32 eventId,IntPtr coreEventArgs,UInt32 eventArgsTypeIndex)

请求帮助

2 个答案:

答案 0 :(得分:1)

您正在尝试从ReadOnly集合中删除项目。你不能改变这样的集合。正如您所期望的那样,您只能阅读此类集合,但您无法对其进行更改。

你的标题是指文本框,但你的代码和堆栈跟踪意味着使用ItemsSource。

如果您需要能够更改显示的内容,只需将UI元素设置为只读,并使后备集合可写。

如果您可以显示一些示例代码,我们可以展示如何正确更改它。

答案 1 :(得分:1)

如果你使用ListBox属性将ItemsSource绑定到某个地方的某个列表(在视图模型中会很好),正如Matt建议的那样,你的问题就是这样,那么为了删除一个列表中的项目,从源集合中删除它。如果要修改列表内容,最好的方法是使用ObservableCollection<T>,这会在集合更改时引发集合更改通知,因此您的UI将自动更新:

public ObservableCollection MyList { get; private set; }
...
// Inside an event handler or view model command handler.
this.MyList.Remove(itemToRemove);