2011-07-28 44 views
3

我在非常複雜的WPF UI中面臨渲染問題,其中包含大量轉換器(IValueConverter,IMultiValueConverter)。如何執行WPF轉換器?

我想知道轉換器是否可以涉及到這一點。

有人知道WPF轉換器是如何工作的嗎? 他們是並行執行,然後與UI線程同步?或者是否有某種對待每個轉換器的foreach循環?

回答

8

轉換器是在UI線程上執行的,你可以通過使用類似Thread.Sleep(10000)的東西來阻止線程來測試。 UI在調度程序隊列中進行管理,請參閱threading model reference以獲取更多信息,對綁定的更新將被推送到該隊列中。如果綁定已更新,則會調用轉換器,但通常不會同時調用它們。

(另請參閱下面的好評論)

+1

+1,奈斯利措辭。我還想補充一點,如果你有一個需要很長時間執行的轉換器,它會阻止UI,因爲它是在UI線程上。 –

+1

+1,很好的解釋。作爲旁註:即使綁定是異步的,轉換器也在UI線程上執行*(IsAsync = True)。屬性值是從源異步檢索的,然後轉換器在UI線程上同步執行。 –

+0

@ThomasLevesque:我想要補充一點,因爲它根本不直觀,好點。 –