无法在WPF ItemsControl中快速显示图像列表
本文关键字:显示 显示图 图像 列表 WPF ItemsControl | 更新日期: 2023-09-27 18:05:54
我有ItemsControl(列表框)与一些自定义复杂的数据模板。它需要几秒钟来显示窗口与这个列表框!
我的listbox datatemplate包含image:
<Image Stretch="Uniform"
x:Name="image"
Grid.ColumnSpan="1"
Source="{Binding ImagePath}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="Auto"
Grid.Column="0"
MinWidth="20"
MinHeight="20"
d:LayoutOverrides="GridBox"
Margin="1,0,1,1" />
几乎所有的imagepath都是null。我注意到这个空产生异常,但wpf引擎隐藏它!我认为这就是问题的根源。当我知道图像路径为空时,是否可以禁用图像加载!?
将此DataTrigger
添加到您的DataTemplate
:
<DataTrigger Binding="{Binding ImagePath}" Value="{x:Null}">
<Setter TargetName="image" Property="Source" Value="{x:Null}"/>
</DataTrigger>
尝试FallBackValue
属性设置绑定异常抛出时的值(msdn链接)例如:FallbackValue="pack://application:,,,/Resources/Images/nocover.png"
或{x:null}
还有TargetNullValue
,当绑定数据为null时设置默认值
另一种选择是尝试使用一个转换器,如果parameter为null,则返回默认值。
解决了这里类似的问题