1

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

我的列表框数据模板包含图像:

<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" />

几乎所有的 ImagePaths 都是空的。我注意到这个 null 会产生异常,但 wpf 引擎会隐藏它!我认为这是问题的根源。当我知道图像路径为空时,是否可以禁用图像加载!?

4

2 回答 2

4

将此添加DataTrigger到您的DataTemplate

<DataTrigger Binding="{Binding ImagePath}" Value="{x:Null}">
    <Setter TargetName="image" Property="Source" Value="{x:Null}"/>
</DataTrigger>
于 2013-03-26T19:07:58.943 回答
1

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

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

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

在这里解决了类似的问题

于 2013-03-26T19:08:01.463 回答