【问题标题】:How WPF Converters are executed?WPF转换器是如何执行的?
【发布时间】:2011-07-28 21:26:29
【问题描述】:

我在非常复杂的 WPF UI 中面临渲染问题,其中包含许多转换器(IValueConverter、IMultiValueConverter)。

我想知道转换器是否可以参与其中。

有人知道 WPF 转换器是如何工作的吗? 它们是并行执行然后与 UI 线程同步的吗?还是有某种处理每个转换器的 foreach 循环?

【问题讨论】:

    标签: wpf data-binding converter


    【解决方案1】:

    转换器在 UI 线程上执行,您可以通过使用 Thread.Sleep(10000) 之类的东西阻塞线程来测试它。 UI 在调度程序队列中进行管理,有关更多信息,请参阅threading model reference,对绑定的更新被推送到该队列中。如果绑定已更新,则调用转换器,通常不会同时调用它们。

    (另请参阅下面的好 cmets)

    【讨论】:

    • +1,措辞优美。我还想补充一点,如果您有一个需要很长时间才能执行的转换器,它将阻塞 UI,因为是的,它位于 UI 线程上。
    • +1,很好的解释。附带说明:即使绑定是异步的(IsAsync=True),也会在 UI 线程上执行转换器。属性值从源中异步检索,然后转换器在 UI 线程上同步执行。
    • @ThomasLevesque:我很想添加这个,因为它根本不直观,好点。
    • +1 提供非常丰富的答案以及对线程模型的出色(和有趣)参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多