一个Observablecollection,在两个视图中具有不同的操作

时间:2014-03-18 11:01:34

标签: c# wpf

我面临一个问题,我有两个控件,它们都共享一个公共的Observablecollection,两个列表框有一个commomn Items Source(常见的Observablecollection)。现在,当我必须清除一个ListBox(collection.Clear)中的项目时,我不想删除第二个列表框中的项目。 克隆集合并将克隆集合分配为其他ListBox的Itemsource解决了我的目的,但是如果我从第一次收集中删除任何项目如何从对应项中删除相同的项目。

 <ListBox x:Name="canvasListBox" ItemsSource="{Binding VectorImages,Mode=TwoWay}" SelectedItem="{Binding ImageVectorSelected}"  BorderBrush="Transparent" Background="Transparent">

<ListBox x:Name="ChildListBox" ItemsSource="{Binding ClonedVectorImages,Mode=TwoWay}" SelectedItem="{Binding ImageVectorSelected}"  BorderBrush="Transparent" Background="Transparent">

ViewModel -

VectorImages.Clear();

 private void DeleteVector()
        {
          VectorImages.Remove((ImageVector)_deleteCommand.Parameter);

           foreach (var item in VectorImages)
           {
             if (item.CountId > RemovedVectorCountId)
             {
                 item.CountId = item.CountId - 1;
             }
           }
           countId--;
        }

1 个答案:

答案 0 :(得分:0)

您应该有两个单独的ObservableCollections,其中包含相同的对象。因此,您可以对其中一个集合执行.Clear(),而不对另一个集合执行相同操作。 OTOH当你想从两个列表中删除一个项目时,你必须手动完成。

因此,当您要移除项目时:执行collection1.Remove(item),您可以对collection2 collection2.Remove(item)执行相同操作。