2009-11-10 8 views
1

에 다음 XAML을 CroppedBitmap를 사용하는 것은 Window 내부 확인을 작동합니다WPF는 DataTemplate을

:

<Border Width="45" Height="55" CornerRadius="10" > 
    <Border.Background> 
     <ImageBrush> 
      <ImageBrush.ImageSource> 
       <CroppedBitmap Source="profile.jpg" SourceRect="0 0 45 55"/> 
      </ImageBrush.ImageSource> 
     </ImageBrush>  
    </Border.Background> 
</Border> 

하지만 내가 런타임에서 다음과 같은 오류를 얻을 DataTemplate에 해당하는 코드를 사용할 때

실패한 개체 초기화 (ISupportInitialize.EndInit). 'Source' 속성이 설정되지 않았습니다. 개체에서 오류가 발생했습니다. 'System.Windows.Media.Imaging.CroppedBitmap' 마크 업 파일에 오류가 있습니다.
내부 예외 :
{ " '소스'속성이 설정되어 있지 않습니다."}

유일한 차이점은 내가 가지고있는 CroppedBitmap의 소스 속성 데이터 바인딩 :

<CroppedBitmap Source="{Binding Photo}" SourceRect="0 0 45 55"/> 

뭐라 구요?

UPDATE

: 그것은 ISupportInitialize 구현 때문에 old post by Bea Stollnitz 이에 따라CroppedBitmap의 소스 속성의 제한이다. (이 정보는 페이지 아래에 있습니다 - "11:29"에 대한 검색을하면 알 수 있습니다).
.Net 3.5 SP1에서도 여전히 문제가 있습니까?

var c = new CroppedBitmap(); 
c.BeginInit(); 
c.Source = ... OR c.SetBinding(... 
c.SourceRect = ... 
c.EndInit(); 

EndInit()가 null로 Source을 필요 다음 XAML 파서 CroppedBitmap을 만들면

답변

3

, 그것의 상당한다.

당신이 c.Source=...

, 값은 항상 EndInit() 전에 설정되어 있지만이 c.SetBinding(...)를 사용하는 경우, 그것은 바로 결합 할 시도하지만 DataContext가 아직 설정되지 않았 음을 감지합니다. 따라서 나중에 바인딩을 연기합니다. 따라서 EndInit()이 호출되면 Source은 여전히 ​​null입니다.

이 이유는이 시나리오에서 변환기가 필요한 이유를 설명합니다.

+0

나는 이것이 아주 오래된 주제이지만, 같은 문제가 있음을 알고 있습니다. 어떤 변환기를 만들어야합니까? 어떤 도움을 Thx! – PitAttack76

0

나는 오래되었다는 것을 알고 있지만 나는 변환기로 대답을 완성 할 것이라고 생각했다. 이제이 변환기를 사용하고 있는데 작동하는 것 같습니다. 더 이상 원본 속성이 설정되지 않았습니다.

public class CroppedBitmapConverter : IValueConverter 
{ 
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    FormatConvertedBitmap fcb = new FormatConvertedBitmap(); 
    fcb.BeginInit(); 
    fcb.Source = new BitmapImage(new Uri((string)value)); 
    fcb.EndInit(); 
    return fcb; 
} 

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    throw new NotImplementedException(); 
} 
} 
+0

언급 한 Bea Stollnitz의 블로그가 사라졌습니다. 어디에서/어떻게 변환기를 사용할 지 모르겠습니다. 나는 {'시도했지만'Source' 속성이 설정되지 않았습니다. 어떻게 그 일을했는지 ​​기억하니? –