实体框架提供了可追踪实体,这些实体具有名为ChangeTracker.State的属性。使用这个我们可以识别一个实体是否被删除。WPF CollectionViewSource.Filter性能对数据触发器
在我们的列表中,我们不想显示已删除的实体。
哪个更快?
方法1:使用CollectionViewSource.Filter测试和删除的记录
<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;
}
方法2:添加DataTrigger到ItemTemplate.DataTemplate测试和隐藏项目
<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>
谢谢。
几乎总是:找出你需要测量的更快。创建选项和度量。有太多的依赖我们看不到,因此几乎不可能给这类问题提供一个坚实的答案。 –
是的,但是如何衡量XAML.DataTrigger的执行?因为我认为真正的测量几乎是不可能的,所以我从一个普遍的立场要求更多。 –
当我们试图测量XAML行为之前,缺少“AllDone”事件几乎阻碍了我们准确的计划。 –