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

时间:2013-03-26 19:03:03

标签: c# .net wpf listbox listboxitem

我有ItemsControl(列表框)和一些自定义复杂数据模板。用这个列表框显示窗口需要几秒钟!

我的列表框datatemplate包含图片:

<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。我注意到这个null会产生异常,但是wpf引擎会隐藏它!我认为这是问题的根源。当我知道图像路径为空时,是否可以禁用图像加载!?

2 个答案:

答案 0 :(得分:4)

将此DataTrigger添加到您的DataTemplate

<DataTrigger Binding="{Binding ImagePath}" Value="{x:Null}">
    <Setter TargetName="image" Property="Source" Value="{x:Null}"/>
</DataTrigger>

答案 1 :(得分:1)

尝试FallBackValue属性,该属性在抛出绑定异常时设置值(msdn link) 例如:FallbackValue="pack://application:,,,/Resources/Images/nocover.png"{x:null}

当绑定数据为空时,还有TargetNullValue设置默认值

另一种选择是尝试使用转换器,如果参数为null,则返回默认值。

解决了类似问题here