Развернуть дочерний элемент, если родительский объект расширен в древовидной структуре - PullRequest
0 голосов
/ 22 сентября 2011

Я пытаюсь развернуть дочерний узел при раскрытии его родителя.

В противном случае указано: (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 Ответ

1 голос
/ 22 сентября 2011

У меня оба работают.Если вы проверили его со статическим TreeViewItems, убедитесь, что стиль применен через ресурсы, ItemContainerStyle относится только к динамически создаваемым контейнерам.Также обратите внимание, что при взаимодействии с пользователем может быть установлено локальное значение , переопределяющее эти стили.

...