2012-01-05 3 views
0

ConverterTemplate 내부의 항목 속성에 변환기 매개 변수를 설정하려고합니다. ConverterParameter가 종속성 속성이 아니므로 바인딩이 작동하지 않습니다.
하지만 실제로 바인딩이 필요하지 않습니다. 한 번 설정하면 변경되지 않으므로 충분할 것입니다.ConverterParameter : ItemTemplate 내에서 설정

<ItemsControl ItemsSource="ItemsWithTypeProperty"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
    <RadioButton IsChecked="{Binding SelectedItem.Base.Type, Converter={l:IsEqualConverter}, Mode=TwoWay, ConverterParameter={Type}}" /> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
</ItemsControl> 

IsEqualConverter :
변환은 : 매개 변수에 값을 비교하고 그 결과를
ConvertBack를 반환 값이 true 인 경우이 매개 변수

ItemTemplate을의 DataContext에에게 반환 포함하는 클래스입니다 「Type」라는 이름의 프롭퍼티
유형이 object입니다.

{Type}을 (DataContext)로 설정하는 방법으로 바꿀 방법이 있습니까? 한 번 입력하십시오. 그렇다면 어떻게?

......, ConverterParameter=Type}" /> 

을 그리고 당신의 변환기에 :

답변

1

나는 정확히 유형이 무엇인지 확실하지 않다. 그것은 객체의 System.Type입니까? 항상 고정 된 유형입니까? 유형이 일정하지 않으면 당신이 IMultiValueConverter을 구현하고 MultiBinding를 사용하도록 변환기를 다시 쓸 수

ConverterParameter={x:Type local:TypeToCompare} 

: 당신은 뭔가를 작성할 수 있습니다.

+0

유형이 상수가 아닙니다. 이 경우 유형은 DataContext 객체의 "유형"이름을 갖는 속성을 의미합니다. 멀티 바인딩은 또한 나의 첫 번째 생각 이었지만 그 문제는 내가 다시 변환 할 수 없다는 것이다. ConvertBack은 bool 값만 제공하고 필요한 객체로 다시 변환하기에는 충분하지 않습니다. – Arokh

+0

그럴 경우 OK입니다. 드로잉 보드로 돌아가거나 실제로해야한다면 ConverterParameter를 바인딩 할 수있는 해킹이 있습니다. http://marlongrech.wordpress.com/2008/08/03/my-wish-came-true-i-can-now-use-databinding-in-a-converterparameter/을 참조하십시오. –

0

봅니다이 사용하는

if ((string)parameter == "Type")) 
    { 
     //Do some stuff 
    } 
+0

이 경우 Type은 Datacontext 개체의 Type 속성 값이어야합니다. – Arokh

관련 문제