바운드 경로 파일이 없는데 어떻게 기본 이미지를 표시 할 수 있습니까?누락 된 파일에 이미지 소스 바운드
<Image Source="{Binding DisplayedBook.ImagePath}" />
내 솔루션 : 이미지가 존재하고 적절한 경로를 반환 여부를 확인 컨버터를 사용합니다.
바운드 경로 파일이 없는데 어떻게 기본 이미지를 표시 할 수 있습니까?누락 된 파일에 이미지 소스 바운드
<Image Source="{Binding DisplayedBook.ImagePath}" />
내 솔루션 : 이미지가 존재하고 적절한 경로를 반환 여부를 확인 컨버터를 사용합니다.
ImagePath
getter에서 기본 이미지를 반환하지 않으려면 다른 접근 방식이 null을 반환하는 것보다 좋습니다.
public string ImagePath
{
get
{
return File.Exists(m_Path) ? m_Path : null;
}
}
및 XAML에서
는 또한 가져 바인딩은 값을 반환 할 수없는 경우에 사용하는 값을 설정하는FallbackValue
속성을 추가 할 수 있습니다
<Image Source="{Binding DisplayedBook.ImagePath, TargetNullValue={StaticResource SomeImageResource}}" />
wpf를 사용하지 않으므로 특별한 기능이 있는지 모르겠습니다.
그러나 나는 게터 메서드 DisplayedBook.ImagePath
같은 것을 구현할 것이다. 파일이 존재하는지 검사하고 그렇지 않으면 기본 이미지의 경로를 반환합니다.
다음과 같이 할 수 있습니다.
경로의 이미지 경로를 가져옵니다.
if (!File.Exists(path))
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(path);
image.DecodePixelWidth = Convert.ToInt32(img.Width);
image.EndInit();
//Set the image corresponding to that bound
this.img.Source = image;
}
당신은 코드 숨김이 XAML에 연결 한 경우 (즉,하지 템플릿)는 ImageFailed 이벤트에 기본 이미지를 설정할 수 있습니다
<Image Source="{Binding ImagePath}" ImageFailed="Image_ImageFailed" />
및 핸들러 :
private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
Image image = e.Source as Image;
if (image != null)
image.Source = new BitmapImage(new Uri("http://SomeDefaultImagePath.jpg"));
}
바인딩의 TargetNullValue 속성을 사용합니다.
나는 그것에 대해 생각했다. 문제는 책 엔티티와 UI가 결합 된 것이다. 그리고이 책은 기본 이미지가 무엇인지 알 수 없습니다. – Amirshk