0

我正在使用我自己的派生ObservableCollection实现,以允许我在其之上ICollectionViewFactory创建自己的。IEditableCollectionView视图的(主要)目的是允许过滤掉标记为“已删除”的对象,以便这些记录不会显示给用户,但仍保留在集合中,只要它们未标记为“已接受”或回滚。

我在正确的轨道上吗?或者这不是目的IEditableCollectionView

更新:集合必须支持添加、删除和编辑记录。

第二次更新:标记为“已删除”的记录必须仍在源集合中,因为可以回滚删除操作。

4

1 回答 1

1

我认为你所追求的可以更容易实现

假设你有一个模型

public class Item
{
    public bool IsDeleted { get; set; }

    public string Name { get; set; }
}

你的ViewModel包含一个集合

public ObservableCollection<Item> MyItems { get; set; }

您可以添加ICollectionView将按未删除的项目过滤您的集合的属性。这是一个例子:

public ICollectionView UndeletedItems { get; set; }

过滤逻辑:

// Collection which will take your ObservableCollection
var itemSourceList = new CollectionViewSource { Source = MyItems };

// ICollectionView the View/UI part 
UndeletedItems = itemSourceList.View;

//add the Filter
UndeletedItems.Filter = new Predicate<object>(item => !((Item)item).IsDeleted);

然后将您的视图UndeletedItems绑定到

<DataGrid ItemsSource="{Binding UndeletedItems}" AutoGenerateColumns="False">
    <DataGrid.Columns>
         <DataGridTextColumn Binding="{Binding Name}"/>
    </DataGrid.Columns>
</DataGrid>

这将隐藏已删除的项目,同时仍支持 CRUD 操作。

希望这可以帮助

于 2013-10-15T17:49:11.533 回答