在TreeView中父扩展时展开子项

时间:2011-09-21 21:57:26

标签: wpf binding treeview datatrigger

我正在尝试在扩展其父节点时扩展子节点。

另有说明:(Child.IsExpanded == Parent.IsExpanded)

这看似正确,但似乎不起作用:

<TreeView ItemsSource="{Binding}">
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Style.Triggers>
                <DataTrigger Value="True" 
                             Binding="{Binding Path=IsExpanded, 
                             RelativeSource={RelativeSource 
                             Mode=FindAncestor, 
                             AncestorType={x:Type TreeViewItem}, 
                             AncestorLevel=2}}">
                    <Setter Property="IsExpanded" Value="True" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

这两个都没有:

<TreeView ItemsSource="{Binding}">
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsExpanded"
                    Value="{Binding Path=IsExpanded, 
                             RelativeSource={RelativeSource 
                             Mode=FindAncestor, 
                             AncestorType={x:Type TreeViewItem}, 
                             AncestorLevel=2}}" />
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

两者都适合我。如果您使用静态TreeViewItems对其进行测试,请确保通过资源应用样式,ItemContainerStyle仅与动态创建的容器相关。另请注意,用户交互可能会设置本地值,从而覆盖这些样式。