如何将子项上的Trigger设置为父属性?

时间:2010-07-01 14:41:05

标签: xaml binding treeview triggers togglebutton

我有一个带有ToggleButton(ExpanderButton)的TreeView。 togglebutton有两个图像(一个用于展开,一个用于展开)。然而,当我选择一个TreeViewItem时,我用不同的颜色突出显示它,我也想改变图像的颜色(我在另一种颜色中有相同的颜色)。

问题是我不知道如何在ToggleButton上将触发器属性设置为TreeViewItem上的IsSelected属性。

任何想法?

1 个答案:

答案 0 :(得分:36)

如果其他人需要这个。

<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>