2012-03-01 2 views
0

작동하지 않음 (A TreeView과 결합을, 내가 사용하고 사용자 정의 컨트롤의) . 나는 실험 및 인터넷에 대한 몇 가지 돼고를 검색하고 이것이 내가 얼마나 멀리 왔는지입니다 : 는 MultiTrigger : 결합 DataTrigger 및 PropertyTrigger 나는 내가 <code>GridViewColumn</code>의 <code>Image</code> 표시 할 <code>MultiDataTrigger</code>에 <code>DataTrigger</code>과 <code>PropertyTrigger</code>을 결합해야 문제가

<Image Width="16" 
     Height="16" 
     Stretch="UniformToFill"> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" 
          Value="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" /> 
        <Style.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding WpfSettings.IsExpanded}" Value="True" /> 
          <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Source}" Value="/folder_closed.png" /> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Source" Value="/folder_open.png" /> 
         </MultiDataTrigger> 
        </Style.Triggers> 
      </Image.Style> 
    </Image> 

지금, 처음에 ImageConverter에 따라, 두 개의 이미지를 가질 수 있습니다. folder_open 또는 다른 하나 (중요하지 않음). 이제 내가 원하는 것은 TreeViewNode가 확장되었을 때 ( WpfSetting.IsExpanded = true) 이미지 소스가 folder_closed 인 경우 이미지에서 folder_open 이미지를 가져 오게 할 때입니다. 나는 위의 코드와 비슷하다고 생각하지만 실제로 작동하지는 않습니다. ImageTreeViewNode을 열어도 전혀 변경되지 않습니다.

나는 RelativeSource=Self의 조건에 문제가 있다고 생각하지만 잘 모르겠습니다.

저를 도울 수있는 사람은 누구입니까? 미리 감사드립니다.

물론 필요한 경우 더 많은 정보/코드를 제공 할 수 있습니다.

답변

1

문제는 RelativeSource = 자체로가 아니라 당신이 문자열 값 ("/folder_closed.png")에 (유형 ImageSource입니다) 자료를 비교하려고 할 때, 그것은 거짓

는 다음과 같은 조건보십시오 반환 :

<Condition Binding="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" Value="/folder_closed.png" /> 
+0

변환기의 반환 값을 비교하는 것은 의미가 있지만 실제로 시도했지만 아직 작동하지 않습니다. –

+0

문제는 WpfSettings.IsExpanded 속성에 있다고 생각합니다. MultiValueConverter로 디버깅 할 때 IsExpanded 속성은 "UnsetDependencyProperty"값을 가지며, 트리거가 호출 될 때도 마찬가지입니다. –

+0

예 수 있습니다. true/false로 IsExpanded를 사용하여 비슷한 테스트 코드를 시도했는데 예상대로 작동했습니다. –