Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的多线程a样式数据触发器IValueConverter_C#_Wpf_Multithreading_Datatrigger_Ivalueconverter - Fatal编程技术网

C# WPF中的多线程a样式数据触发器IValueConverter

C# WPF中的多线程a样式数据触发器IValueConverter,c#,wpf,multithreading,datatrigger,ivalueconverter,C#,Wpf,Multithreading,Datatrigger,Ivalueconverter,我通过设置样式DataTrigger并将其绑定到IValueConverter(CheckForShade)来有条件地格式化listview,该转换器返回是否应应用样式 <Style.Triggers> <DataTrigger Binding="{Binding Converter={StaticResource CheckForShade}}" Value="false" > <Setter

我通过设置样式DataTrigger并将其绑定到IValueConverter(CheckForShade)来有条件地格式化listview,该转换器返回是否应应用样式

<Style.Triggers>       
            <DataTrigger Binding="{Binding Converter={StaticResource CheckForShade}}" Value="false" >
                <Setter Property="Background" Value="Red" />
            </DataTrigger>
</Style.Triggers>

问题在于,IValueConverter中包含的逻辑非常密集,我想以某种方式对其进行多线程处理,以便可以同时对Listview中的每一行的格式进行评估,并在UI线程以外的线程中进行评估


另外,它当前会减慢应用程序的打开速度,同时会检查Listview的所有行并应用格式设置。我想延迟格式设置检查,直到UI加载完毕,然后对每行执行多线程操作。

您可以尝试使用绑定,将
IsAsync
设置为
true
,然后将回退值指定为false:请参阅

或者,使用具有最高优先级的CheckForShade转换器的
PriorityBinding
和返回具有较低优先级的
false
的默认绑定:
PriorityBinding
的好处是,它会不断侦听列表中较高级别绑定的属性更改。通过这种方式,您可以实现如下转换器:

  • 创建一个工作线程来计算布尔值,并将它们放入静态字典中
  • 实现转换器以查看结果是否就绪(例如,使用字典上的
    TryGetValue
  • 如果结果已准备好,请返回它。否则,返回
    dependencProperty.UnsetValue

您可以尝试使用将
IsAsync
设置为
true
的绑定,然后将回退值指定为false:请参阅

或者,使用具有最高优先级的CheckForShade转换器的
PriorityBinding
和返回具有较低优先级的
false
的默认绑定:
PriorityBinding
的好处是,它会不断侦听列表中较高级别绑定的属性更改。通过这种方式,您可以实现如下转换器:

  • 创建一个工作线程来计算布尔值,并将它们放入静态字典中
  • 实现转换器以查看结果是否就绪(例如,使用字典上的
    TryGetValue
  • 如果结果已准备好,请返回它。否则,返回
    dependencProperty.UnsetValue

转换器在UI线程中运行:转换器在UI线程中运行: