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

ほとんどすべてのImagePathはnullです。このnullは例外を生成することに気づきましたが、wpfエンジンはそれを隠します!これが問題の原因だと思います。画像パスがnullであることがわかっている場合、画像の読み込みを無効にすることはできますか?

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 link)例:FallbackValue="pack://application:,,,/Resources/Images/nocover.png"または{x:null}

TargetNullValueバインドされたデータがnullの場合にデフォルト値を設定するものも あります

別のオプションは、パラメーターがnullの場合にデフォルト値を返すコンバーターを試すことです。

ここで同様の問題を解決 しました

于 2013-03-26T19:08:01.463 に答える