2011-10-25 3 views
0

UI의 이미지 속성에 연결된 viewmodel을 사용 중이며 viewmodel에 ImageSource 속성이 있습니다. 나는 내 BitmapImage에 정지를 호출 할 때, 예외 또는 충돌을 얻을 주요 창문으로 나타나지 않습니다, 다음 코드에서 다음과 같은 기능을 몇 가지 이상한 이유로WPF 고정 BitmapImage가 표시되지 않습니다.

private BitmapImage GetImageFromUri(Uri urisource) 
    { 
     if (urisource == null) 
      return null; 

     var image = new BitmapImage(); 
     image.BeginInit(); 
     image.UriSource = urisource; 
     image.EndInit(); 
     image.Freeze(); //commenting this shows the image if the routine is called from the proper thread. 

     return image; 
    } 

를 사용하여 해당 속성을 설정합니다. 아무도 이걸 도와 줄 수 있니? GetImageFromUri 호출이 UI 스레드가 아닌 다른 스레드에서 만들어진 것으로 가정하고 생성 된 이미지를 사용할 수 있도록 이미지 속성을 비동기 적으로 설정하고 있습니다.

답변

0

고정하기 전에 완전히 렌더링해야합니다.
SourceUpdated 이벤트를 수신 대기 한 다음 이미지를 고정해야합니다.

그 후에 이미지를 수정하고 싶다면 복제해야합니다.

+0

렌더링이란 무엇을 의미합니까? – ak3nat0n

+0

그래픽으로 렌더링됩니다. 소스가 시각화 할 수 없도록 설정하면 WPF는 먼저 이미지를 렌더링해야합니다. WPF가 그 일을 할 수있는 기회를 갖기 전에 얼어 붙은 것 같습니다. –

2

BitmapImage의 CacheOption을 고정하기 전에 설정해보십시오. 이 작동 여부 확인 -

var image = new BitmapImage(); 
image.BeginInit(); 
image.CacheOption = BitmapCacheOption.OnLoad; 
image.UriSource = urisource; 
image.EndInit(); 
image.Freeze(); 
관련 문제