2013-03-26 4 views
1

사용자 정의 복합 데이터 템플릿이있는 ItemsControl (목록 상자)이 있습니다. 그리고이리스트 박스로 윈도우를 보여주는 데 몇 초가 걸립니다!WPF에서 이미지 목록을 빠르게 표시 할 수 없습니다 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 :

내 목록 상자 DataTemplate을 이미지가 포함되어 있습니다. 이 null이 예외를 생성하지만 wpf 엔진이이를 숨 깁니다. 나는 이것이 이것이 문제의 근원이라고 생각한다. 이미지 경로가 null임을 알 때 이미지로드를 비활성화 할 수 있습니까?

답변

4

DataTrigger에 추가하여 DataTemplate :

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

해결 그리고 이것은 무엇을 할 것 인 .. 파라미터가 null의 경우 기본 값을 반환하는 컨버터 시도 할 것인가? 값이 null의 경우, null를 설정합니다. – Evgeny

+0

@Evgeny 시도해 보셨습니까? 이것은 디폴트'TypeConverter'가 실제로 당신의 지연을 일으키는 예외를 던지는 것을 막을 것입니다. –

+1

또는 두 개의 대답을 결합하고'Source = {Binding ImagePath, FallbackValue = {x : Null}}'을 사용하여 동일한 결과를 얻을 수 있습니다. –

1

바인딩 예외가 발생하면 값을 가져 오거나 설정 FallBackValue 속성을 봅니다 (msdn link) 예 : FallbackValue="pack://application:,,,/Resources/Images/nocover.png" 또는 {x:null}

을 설정하는 또한 TargetNullValue있다 바운드 데이터가 null 일 때의 기본값

A 사람 같아 옵션은

가 유사한 문제 here

관련 문제