2010-07-01 10 views
15

Tengo un TreeView con un ToggleButton (ExpanderButton). El togglebutton tiene dos imágenes (una para expandir y otra cuando no). Sin embargo, cuando selecciono TreeViewItem, lo resalto con un color diferente y me gustaría cambiar el color de las imágenes también (tengo las mismas en el otro color).¿Cómo establecer un disparador en un niño a una propiedad principal?

Problema es que no sé cómo establecer una propiedad de activación en el ToggleButton a la propiedad IsSelected en TreeViewItem.

¿Alguna idea?

+0

Bueno DataBinding con RelativeSource es la forma correcta, supongo. Descubierto segundos después de haber publicado, aunque había estado buscando. Simplemente no usé la frase de búsqueda correcta. –

Respuesta

30

Aquí si alguien más necesita esto.

<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

exactamente lo que estaba buscando gracias –

Cuestiones relacionadas