【发布时间】:2011-02-21 02:28:49
【问题描述】:
我有一个我自己没有创建的 WPF 表单,所以我不太擅长 WPF。但它泄漏得很厉害,最多 400 MB,关闭表单也无济于事。
问题在于我的应用程序一次加载所有图片。我只想加载目前可见的那些。它大约有 300 张图片,而且它们有点大,所以我的 WPF 表单无法全部加载。
我有一个DataTemplate,我自己的类型有一个属性Thumbnail。模板中的代码是这样的:
<Image Source="{Binding Path=Thumbnail}" Stretch="Fill"/>
然后我有一个带有以上述模板作为源的控件的网格。该控件的代码如下。请向我提供有关如何优化代码的提示,并可能获得唯一可见且仅同时加载那么多控件的代码?
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Controls:ElementFlow">
<Grid Background="{TemplateBinding Background}">
<Canvas x:Name="PART_HiddenPanel"
IsItemsHost="True"
Visibility="Hidden" />
<Viewport3D x:Name="PART_Viewport">
<!-- Camera -->
<Viewport3D.Camera>
<PerspectiveCamera FieldOfView="60"
Position="0,1,4"
LookDirection="0,-1,-4"
UpDirection="0,1,0" />
</Viewport3D.Camera>
<ContainerUIElement3D x:Name="PART_ModelContainer" />
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport2DVisual3D
RenderOptions.CachingHint="Cache"
RenderOptions.CacheInvalidationThresholdMaximum="2"
RenderOptions.CacheInvalidationThresholdMinimum="0.5"/>
</Viewport3D>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
【问题讨论】:
标签: .net wpf performance memory-leaks