我认为你所追求的可以更容易实现
假设你有一个模型
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 操作。
希望这可以帮助