C# 如何正确实现在ListView完成填充时触发的样式触发器?

C# 如何正确实现在ListView完成填充时触发的样式触发器?,c#,wpf,xaml,listview,datatrigger,C#,Wpf,Xaml,Listview,Datatrigger,我想设置我的列表视图的样式,以便在填充后外观会发生变化。我发现在ListView中有一个名为ItemContainerGenerator的东西,它包含一个Status属性,完成后(我想)该属性将设置为ContainersGenerated 因此,为了实现这一目标,我认为最好的方法是定义一个样式数据触发器来触发该属性 但它不起作用(当然)。我看到的是输出中的以下错误- System.Windows.Data错误:17:无法从“”(类型“ListView”)获取“状态”值(类型“GeneratorS

我想设置我的
列表视图的样式
,以便在填充后外观会发生变化。我发现在
ListView
中有一个名为
ItemContainerGenerator
的东西,它包含一个
Status
属性,完成后(我想)该属性将设置为
ContainersGenerated

因此,为了实现这一目标,我认为最好的方法是定义一个样式数据触发器来触发该属性

但它不起作用(当然)。我看到的是输出中的以下错误-

System.Windows.Data错误:17:无法从“”(类型“ListView”)获取“状态”值(类型“GeneratorStatus”)。BindingExpression:Path=(ItemContainerGenerator.Status);DataItem='ListView'(名称='');目标元素是“ListView”(名称=“”);目标属性为“NotTarget”(类型为“Object”)TargetException:“System.Reflection.TargetException:对象与目标类型不匹配。
位于System.Reflection.RuntimeMethodInfo.CheckConsistency(对象目标)
位于System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(对象对象对象、BindingFlags invokeAttr、绑定器、对象[]参数、CultureInfo区域性)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
位于System.Reflection.RuntimePropertyInfo.GetValue(对象obj、BindingFlags invokeAttr、Binder Binder、对象[]索引、CultureInfo区域性)
位于System.Reflection.RuntimePropertyInfo.GetValue(对象obj,对象[]索引)
在MS.Internal.Data.PropertyPathWorker.GetValue(对象项,Int32级别)
在MS.Internal.Data.PropertyPathWorker.RawValue(Int32 k)中‘

在符合要求的情况下,在提出问题时—

  • 在Visual Studio中创建一个名为“MCVE”的新项目
  • 将下面的代码复制并粘贴到MainWindow.xaml代码上
  • 运行程序。获取数据错误。默默地哭泣

    
    福
    酒吧
    巴兹
    

  • (不幸的是,因为它都是用XAML编写的,所以我必须将整个代码块包装在`中才能显示出来)


    因此,如何正确地创建一个数据触发器,在
    列表视图完成填充时触发?

    删除ItemContainerGenerator.Status周围的括号。对我有用。顺便说一句,如果你正在使用回收,你会不断切换状态,当你滚动。如果您的列表需要很长时间才能填充,听起来您应该使用回收和虚拟化。对于“正常”数量的项目,用户甚至看不到未完成状态,因为它会立即发生。

    删除ItemContainerGenerator.Status周围的括号。对我有用。顺便说一句,如果你正在使用回收,你会不断切换状态,当你滚动。如果您的列表需要很长时间才能填充,听起来您应该使用回收和虚拟化。对于“正常”数量的项目,用户甚至看不到未完成状态,因为它会立即发生