2013-12-17 151 views
2

我已经遇到了一个情况我有一个ItemsControl生成一个数据收集相当复杂的可视化树,死的简单:WPF绑定用户娱乐

<ItemsControl ItemsSource="{Binding Items}"/> 

小问题我已经是当初始绑定建设发生时,它可能需要一段“明显的”时间(根据树的复杂程度,从1/2秒到2秒)。在此期间,UI线程完全无响应(动画挂起,点击未注册等)。

虚拟化已经启用并正在运行,所以基本上我只需要能够在ItemContainerGenerator执行动作的同时播放动画。

+2

您是否尝试过大部分的绑定设置为'IsAsync = TRUE'? –

+0

@HighCore不是,但我确定现在就试试。 – xvpower

+1

我猜你有大量的物品,不是吗? –

回答

2

尝试最绑定设置为IsAsync=True

<SomeControl SomeProperty="{Binding SomeData, IsAsync=True}"/> 
1

为了使这段不冻结UI,你可以把项目数据加载到一个BackgroundWorker http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

然后在BackgroundWorker的的方法结束时,通知项目属性已经改变。

+0

数据已经加载并且很好走,挂起是由绑定引擎本身创建可视对象引起的。 – xvpower

+0

对不起,我误解了。但无论如何,我认为只有当重处理部分放在另一个线程中时,UI才会冻结,如果可能的话,我会建议尝试使用线程解决方案。 –