2010-07-01 9 views
15

Mam TreeView z ToggleButton (ExpanderButton). Togglebutton ma dwa obrazy (jeden dla rozwiniętych i jeden, gdy nie). Jednak gdy wybieram TreeViewItem I, podkreślam go innym kolorem i chciałbym również zmienić kolor obrazów (mam te same w innym kolorze).Jak ustawić wyzwalacz dla dziecka na obiekt nadrzędny?

Problem polega na tym, że nie wiem, jak ustawić właściwość wyzwalacza w ToggleButton na właściwości IsSelected w TreeViewItem.

Jakieś pomysły?

+0

Dobrze DataBinding z RelativeSource jest prawidłowym sposobem, jak sądzę. Dowiedziałem się kilka sekund po tym, jak napisałem, chociaż szukałem. Po prostu nie użyłem właściwej frazy wyszukiwania. –

Odpowiedz

30

Tutaj, jeśli ktoś jeszcze tego potrzebuje.

<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

dokładnie to, czego szukałem dzięki –