Silverlight Can';t从列表框中删除列表框项目

Silverlight Can';t从列表框中删除列表框项目,silverlight,Silverlight,我在Silverlight应用程序中有一个列表框。 列表框: <ListBox Grid.Row="1" Grid.ColumnSpan="2" Name="lbHazards" Margin="5" MinHeight="75" ItemsSource="{Binding Path=HazListByTaskIDCollection}" DisplayMemberPath="sHaz_Name" IsEnabled="{Binding

我在Silverlight应用程序中有一个列表框。 列表框:

<ListBox Grid.Row="1" Grid.ColumnSpan="2" Name="lbHazards" Margin="5"
         MinHeight="75" ItemsSource="{Binding Path=HazListByTaskIDCollection}"
         DisplayMemberPath="sHaz_Name"
         IsEnabled="{Binding Path=IsEnabled}" />
然后在viewmodel中有一个子对象:

Public子FillHazList(ByVal iHazID为整数,ByVal sHaz_Name为字符串)
尝试
Dim yy=新的大众危险品清单由任务ID
yy.iHazID=iHazID
yy.sHaz_Name=sHaz_Name
HazListByTaskIDCollection.Add(yy)
特例
DisplayError(“发生错误”,ex)
结束尝试
端接头
当这个子项被调用时,它就可以很好地工作了。这个项被添加到列表框中。 但是我还需要能够从列表框中删除这些项目 所以我认为这很容易,所以我创造了另一个子

Public Sub-RemoveHazListItem(ByVal iHazID为整数,ByVal sHaz_Name为字符串)
尝试
Dim yyy=新的vw\U HazList\U任务ID
yyy.iHazID=iHazID
yyy.sHaz_Name=sHaz_Name
HazListByTaskIDCollection.Remove(yyy)
HazListByTaskIDCollection.Clear()
特例
DisplayError(“发生错误”,ex)
结束尝试
端接头
此操作运行时没有错误,但不会从列表框中删除该项


我做错了什么?

您的
RemoveHazListItem
方法似乎正在创建一个新的
vw\u HazList\u By\u TaskID
对象,在其中放入几个值,并试图从您的集合中删除这个新创建的对象。您似乎没有得到预期的行为,因为您试图从集合中删除从未添加到集合中的项目

据我所知,有两种方法可以解决您的问题:

  • 在您的
    vw\u HazList\u中,通过任务ID覆盖
    Equals
    。这样做应该允许将新对象视为与集合中的现有对象相等,因此您应该能够通过将与要删除的对象相等的对象传递到
    remove
    来从集合中删除对象

  • 在集合中查找具有匹配的
    iHazID
    sHaz\u Name
    属性的
    vw\u HazList\u By\u TaskID
    对象,并从集合中删除该对象

  • 顺便说一句,
    observateCollection(of T)
    类的方法返回一个
    Boolean
    值,指示它是否能够从列表中删除一个值。如果找不到要删除的项目,它将返回
    False
    ,而不是抛出异常。

    尝试如下操作:

    HazListByTaskIDCollection.RemoveAt(HazListByTaskIDCollection.IndexOf(yyy));