2009-07-07 2 views

답변

17

사용자 지정 변환기가 필요합니다. 살펴보기 article

1

뭔가가 SP1에 추가되었을 수도 있지만, 과거에이 방법을 구현 한 방법은 값을 부울 값으로 변환하는 ValueConvertor를 사용하는 것입니다.

값이 25보다 큰 경우 변환기는 true를 반환하고 그렇지 않으면 false를 반환합니다. 그게 의미가 없으면 예제를 넣을 수 있습니다 :-)

4

뒤에 코드가없는 것은 아닙니다. 일반적인 연습은 다음과 같습니다.

  • UI 요소를 사용하여 작업 할 때 IValueConverter를 만들고 변환기를 사용하여 속성에 바인딩합니다.
  • 바운드 데이터로 작업 할 때 데이터에 bool 속성을 만들고 해당 속성에서 트리거하십시오.
+0

난 바운드 데이터 변환기를 사용하는 아이디어를 좋아합니다. MVVM 패턴을 사용하면 뷰 코드를 뷰 모델 밖으로 유지하는 데 도움이됩니다. –

29

데이터 트리거를 사용하고 RelativeSource 바인딩을 Self로 설정할 수 있습니다. 데이터 트리거는 바인딩을 허용하고 바인딩을 사용하면 변환기를 사용할 수 있습니다.

예 :

<Button Content="I change colour depending on my width for some reason"> 
     <Button.Triggers> 
      <DataTrigger 
       Binding="{Binding 
       Path=Width, 
       RelativeSource={RelativeSource Self}, 
       Converter={StaticResource isLessThanConverter}, 
       ConverterParameter=50}" 
       Value="True"> 
       <Setter Property="Button.Background" Value="Red" /> 
      DataTrigger> 
     Button.Triggers> 
    Button> 

Reference

+3

+1은 ConverterParameter로 isLessThanConverter 접근법을 지적합니다. – cplotts

+2

바인딩에서 'Width' 속성이 명시 적으로 설정되지 않으면'NaN '이기 때문에'ActualWidth '가 대신 사용해야합니다. – pogosama

관련 문제