2010-07-01 8 views
15

Ho un TreeView con un ToggleButton (ExpanderButton). Il pulsante togglebutton ha due immagini (una per espanse e una quando non). Tuttavia quando seleziono un TreeViewItem, lo seleziono con un colore diverso e vorrei cambiare anche il colore delle immagini (ho gli stessi colori dell'altro colore).Come impostare un trigger su un figlio su una proprietà genitore?

Il problema è che non so come impostare una proprietà di trigger sul ToggleButton sulla proprietà IsSelected in TreeViewItem.

Qualsiasi idea?

+0

Bene DataBinding con RelativeSource è il modo corretto che immagino. Scoperto pochi secondi dopo che ho postato anche se stavo cercando. Semplicemente non ho usato la frase di ricerca giusta. –

risposta

30

Qui se qualcun altro ha bisogno di questo.

<ControlTemplate TargetType="ToggleButton"> 
       <Image Name="ExpanderImage" Height="24" Width="24" Source="..\Images\Icons\32x32\Blue\Open.png" /> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="True"> 
         <Setter TargetName="ExpanderImage" Property="Source" Value="..\Images\Icons\32x32\Blue\Close.png" /> 
        </Trigger> 
        <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}}" Value="True"> 
         <Setter TargetName="ExpanderImage" Property="Source" Value="..\Images\Icons\32x32\Green\Open.png" /> 
        </DataTrigger> 
        <MultiDataTrigger> 
         <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" Value="True" /> 
          <Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}}" Value="True" /> 
         </MultiDataTrigger.Conditions> 
         <Setter TargetName="ExpanderImage" Property="Source" Value="..\Images\Icons\32x32\Green\Close.png" /> 
        </MultiDataTrigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
+1

esattamente quello che stavo cercando grazie –

Problemi correlati