2011-02-03 5 views
0

복잡한 형식을 매개 변수로 변환기에 전달할 수 있습니까? 기본적으로 바이트 배열을 BitmapImage로 변환하는 하나의 변환기를 만들었습니다. 그러나 내 바인딩 식에서 매개 변수로 바이트 배열을 전달할 때 매개 변수는 문자열로 전달됩니다. 즉, 내 매개 변수 이름은 PhotosByteArr이고 매개 변수로 전달하면 매개 변수 이름 인 PhotosByteArr 및 바이트 배열을 가져옵니다.IValueConverter 문제

이 내 결합 식 : -

<Image Source="{Binding ConverterParameter=PhotosByteArr, Converter={StaticResource byteArrToBitmap}}" Margin="0" Stretch="Fill"/> 

PhotosByteArr []를 바이트의 인스턴스이다.

무엇이 잘못 될 수 있습니까?

미리 감사합니다 :)

답변

1

에 나는이

{Binding ConverterParameter={Binding PhotosByteArr} ... 

해야한다고 생각하지만 난 당신에 대한 질문이 있습니다. 왜 Convert 방법의 value 인수를 사용하여 다음

{Binding Path=PhotosByteArr ... 

하거나

{Binding PhotosByteArr ... 

과를 작성하지 않습니다? 이 바이트 배열 즉 DataContext를이해야한다 (단독 경로에서 찾을 수 있다고 가정한다 (

<Image Source="{Binding PhotosByteArr, Converter={StaticResource byteArrToBitmap}}" Margin="0" Stretch="Fill"/> 

:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    var array = (byte[])value; 
    ... 
} 
+0

ConverterParameter에 바인딩을 사용할 수 없다는 것을 알고 있습니다. (적어도 과거에는 상당히 문제가있었습니다) –

+0

H.B : - 당신은 조용합니다. 런타임 예외가 발생합니다. – TCM

+0

- converterparameter에서 바인딩 식을 사용할 수 없으며 Path에서 직접 전달하면 변환기의 중단 점도 적중되지 않고 이미지에서 아무 것도 얻지 못합니다. – TCM

2

이 코드는 다음과 같이한다, 알파 - 마우스의 제안이 더 명시 적으로 만들려면 포함))

바인딩 소스는 value 개체의 변환기로 전달되며 추가 정보가 필요하면 변환기 매개 변수는 다른 입력 채널을 제공합니다. 이 경우에는 필요하지 않습니다.

+0

@HB : 고마워요. – TCM