我有一个WPF应用程序,我在其中显示和隐藏许多UserControl对象。 XAML代码如下所示:
<ItemsControl ItemsSource="{Binding Path=MyListOfStuff}" >
<Controls:MyControl Stuff="{Binding}"/>
</ItemsControl>
创建这些对象需要花费大量时间。分析显示'InitializeComponent'占用了MyControl对象的大量时间。我想预先创建这些对象以减少时间。我怎样才能做到这一点?我仍然需要xaml代码,并且不想用代码替换所有代码。
无法使用虚拟化,因为列表中的项有时会大于视图,因此CanContentScroll必须为False。
答案 0 :(得分:1)
有两个方面可以解决您的问题。即使你可以同时使用它们..
你应该看看
如果你使用.net 4.0,你可以使用Lazy类轻松支持Data Virtualization,否则你将不得不创建一些类来支持它。
问候。
答案 1 :(得分:1)
可以在WPF中进行UI缓存,但我很确定它不是你想要的。
当一个视觉被多次绘制时,位图缓存非常有用,因此它只渲染一次,后续渲染仅从缓存中复制。
你必须看一下虚拟化(参见Shoaib的回答)。