ControlTemplate에 사용되는 ValueConverter를 매개 변수화하는 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1401486

문제

내가 작업하고있는 템플릿 컨트롤은 다음과 같은 ValueConverter를 사용합니다.

<ListBox>
   <ListBox.Resources>
      <Controls:CodeDescriptionValueConverter x:Key="CodeDescriptionValueConverter"/>
   </ListBox.Resources>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Converter={StaticResource CodeDescriptionValueConverter}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

이것이 Generic.xaml로 제공하는 기본 모양입니다. 이 컨트롤을 사용하면 다른 형식 문자열을 변환기에 전달하고 싶습니다. 완전한 컨트롤 템플릿을 제공하지 않고도 그렇게 할 수있는 방법이 있습니까?

나의 첫 번째 생각은 컨트롤의 속성에 템플릿 결합과 함께 ConverterParameter를 사용할 수 있다는 것이었지만 ConverterParameters에 결합 할 수 없다는 것을 발견했습니다. 또 다른 옵션은 ConvertTo 메소드에서 컨트롤에 액세스 한 다음 해당 속성을 선택하는 것입니다. 어떻게 해야할지 잘 모르겠습니다. 내가 사용할 때마다 제어 할 때마다 완전히 재판매 할 필요가없는 옵션이 도움이 될 것입니다 (많은 XAML입니다).

도움이 되었습니까?

해결책

이러한 상황에서 나는 일반적으로 두 가지 중 하나를 수행합니다.

1) 형식 문자열에 바인딩하려는 두 속성에 액세스 할 수있는 객체에 바인딩하십시오. 변환기에서는 속성과 형식 문자열 모두에 액세스 할 수 있습니다.

2) 형식 문자열과 형식 텍스트에 대한 데이터 객체/뷰 모델/등에 속성을 추가하십시오. 그런 다음 형식화 된 텍스트 속성에 바인딩하십시오. inotifyPropertyChanged를 사용하고 있다고 가정하면 텍스트 또는 형식 문자열 속성을 변경할 때마다 형식의 텍스트 속성에 대한 속성 변경 이벤트를 해고해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top