2010-07-01 2 views
15

У меня есть TreeView с ToggleButton (ExpanderButton). Переключатель имеет два изображения (один для расширенного и один, когда нет). Однако, когда я выбираю TreeViewItem, я выделяю его другим цветом, и я хотел бы также изменить цвет изображений (у меня такие же цвета в другом цвете).Как установить триггер для дочернего элемента в родительское свойство?

Проблема: я не знаю, как установить свойство триггера на ToggleButton на свойство IsSelected на TreeViewItem.

Любые идеи?

+0

Хорошо привязка данных с RelativeSource является правильным способом, я думаю. Найденные секунды после того, как я опубликовал, хотя я искал. Просто не использовал правильную поисковую фразу. –

ответ

30

Здесь, если кому это еще нужно.

<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

именно то, что я искал благодаря –

Смежные вопросы