我有一个WPF表单,但我不是很擅长WPF技术,因为这个表单泄漏非常严重,高达400 MB,关闭表单也没有帮助。
问题在于我的应用程序一次性加载了所有图片。我希望只加载当前可见的图片。大约有300张图片,它们有点大,所以我的WPF表单在加载它们时会受到影响。
我有一个DataTemplate,它有自己的类型和一个Thumbnail属性。模板中的代码如下:
问题在于我的应用程序一次性加载了所有图片。我希望只加载当前可见的图片。大约有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>