实体框架提供具有名为 ChangeTracker.State 的属性的可跟踪实体。使用它我们可以识别实体是否被删除。
在我们的列表中,我们不想显示已删除的实体。
哪个更快?
方法一:使用 CollectionViewSource.Filter 测试并移除 Record
<CollectionViewSource Filter="ViewSource_Filter" />
private void ViewSource_Filter(object sender, FilterEventArgs e)
{
var _Item = e.Item as ITrackableEntity;
e.Accepted = _Item.ChangeTracker.State != ObjectState.Deleted;
}
方法二:在ItemTemplate.DataTemplate中添加DataTrigger来测试隐藏Item
<DataTemplate.Resources>
<Style TargetType="{x:Type DockPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding ChangeTracker.State}">
<DataTrigger.Value>
<entities:ObjectState>Deleted</entities:ObjectState>
</DataTrigger.Value>
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataTemplate.Resources>
谢谢。