无法在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引擎隐藏它!我认为这就是问题的根源。当我知道图像路径为空时,是否可以禁用图像加载!?

无法在WPF ItemsControl中快速显示图像列表

将此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,则返回默认值。

解决了这里类似的问题